commit ecf5b066f5f6310f7681946589e50cfe7978424c
parent 515dd02ab9b52043e250629a98425bb50e608acd
Author: Jean-Yves Lefort <jylefort@brutele.be>
Date: Thu, 7 Oct 2004 03:32:35 +1000
mail-notification-0.7.0
* Binaries compiled with GCC 3.4.x were crashing in various
places: fixed
* Fixed a vulnerability in the IMAP code (a malicious IMAP
server could trigger a null pointer dereference by sending
an invalid reply)
* Fixed a vulnerability in the Gmail code (a man in the middle
attack could, with some libsoup configurations, trigger a
null pointer indirection)
* The properties dialog has been split into tabs
* A mail summary has been added (requires GMime version 2.0 or
superior)
* Double-clicking on the icon now displays the mail summary
(the double-clicked command has been removed)
* The "new mail" command is now executed every time a mailbox
receives one or more new messages
* Tracks the latest Gmail change (reported by Vincent Noel)
* Gmail support now requires libsoup version 2.2 or superior
(which is part of GNOME 2.8)
* The manual is now installed in the proper location (Pascal
Giard, Christian Krause)
* The --with-gconf-schema-file-dir configure argument was
ignored: fixed (Julio M. Merino Vidal)
* A few minor issues have been fixed
* Some cleanups have been performed
* The German translations have been updated (Hendrik Brandt)
* Added Serbian translations (Filip Miletic)
* Added Bulgarian translations (Vladimir Petkov)
Diffstat:
190 files changed, 21607 insertions(+), 6600 deletions(-)
diff --git a/AUTHORS b/AUTHORS
@@ -9,6 +9,9 @@ Contributors:
* Duarte Henriques <duarte_henriques@myrealbox.com>
(portuguese translations)
* Dan Korostelev <dan@ats.energo.ru> (russian translations)
+ * Filip Miletic <filmil@gmail.com> (serbian translations)
+ * Vladimir Petkov <vpetkov@i-space.org> (bulgarian
+ translations)
External art sources:
* Google (gmail.png)
diff --git a/INSTALL b/INSTALL
@@ -7,10 +7,11 @@ Index
0. About this document
1. Dependencies
2. Instructions
+ 3. Configure options
0. About this document
- $Id: INSTALL,v 1.10 2004/09/08 23:35:47 jylefort Exp $
+ $Id: INSTALL,v 1.12 2004/10/03 15:58:02 jylefort Exp $
Copyright (c) 2003, 2004 Jean-Yves Lefort.
@@ -31,8 +32,8 @@ Index
* for Gmail support:
- libsoup (version 1.99.28)
- ftp://ftp.gnome.org/pub/GNOME/sources/libsoup/1.99/
+ GNOME (version 2.8.0 or superior)
+ http://www.gnome.org/
* for SSL/TLS support:
@@ -44,6 +45,11 @@ Index
Cyrus SASL (version 2.0 or superior)
http://asg.web.cmu.edu/sasl/sasl-library.html
+ * for MIME support:
+
+ GMime (version 2.0 or superior)
+ http://spruce.sourceforge.net/gmime/
+
2. Instructions
Mail Notification uses the well-known GNU build system. Hence,
@@ -66,22 +72,68 @@ Index
(http://bugzilla.gnome.org/show_bug.cgi?id=151082),
your session must be restarted after installing Mail
Notification.
-
- The ./configure script behaviour can be changed using
- command-line options: type "./configure --help" for an
- exhaustive list.
-
- These options are specific to Mail Notification:
-
- --enable-mbox
- --enable-mh
- --enable-maildir
- --enable-pop3
- --enable-imap
- --enable-ssl
- --enable-sasl
- --enable-sylpheed
- --enable-gmail
- --enable-ipv6
-
- They are all enabled by default.
+
+ The ./configure script options are documented below. They are
+ enabled by default and automatically disabled if a requirement
+ is not met, so you probably do not need to use them.
+
+3. Configure options
+
+ --enable-mbox (default: yes)
+
+ Enable mbox mailbox support.
+
+ --enable-mh (default: yes)
+
+ Enable MH mailbox support.
+
+ --enable-maildir (default: yes)
+
+ Enable Maildir mailbox support.
+
+ --enable-pop3 (default: yes)
+
+ Enable POP3 mailbox support.
+
+ --enable-imap (default: yes)
+
+ Enable IMAP mailbox support.
+
+ --enable-ssl (default: yes)
+
+ Enable SSL/TLS support.
+
+ Requirements: OpenSSL version 0.9.5b or superior.
+ Applies to: POP3, IMAP.
+
+ --enable-sasl (default: yes)
+
+ Enable SASL authentication support.
+
+ Requirements: Cyrus SASL version 2.0 or superior.
+ Applies to: POP3, IMAP.
+
+ --enable-sylpheed (default: yes)
+
+ Enable Sylpheed format support.
+
+ --enable-gmail (default: yes)
+
+ Enable Gmail mailbox support.
+
+ Requirements: GNOME version 2.8.0 or superior.
+
+ --enable-ipv6 (default: yes)
+
+ Enable IPv6 support.
+
+ Applies to: POP3, IMAP.
+
+ --enable-mime (default: yes)
+
+ Enable MIME support. If this option is disabled, the
+ mail summary will not be able to display messages of
+ mbox, MH, Maildir, POP3, IMAP and Sylpheed mailboxes.
+
+ Requirements: GMime version 2.0 or superior.
+ Applies to: mbox, MH, Maildir, POP3, IMAP, Sylpheed.
diff --git a/Makefile.in b/Makefile.in
@@ -103,6 +103,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -110,9 +112,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -186,6 +185,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/NEWS b/NEWS
@@ -1,3 +1,33 @@
+0.7.0 06 October 2004
+
+ * Binaries compiled with GCC 3.4.x were crashing in various
+ places: fixed
+ * Fixed a vulnerability in the IMAP code (a malicious IMAP
+ server could trigger a null pointer dereference by sending
+ an invalid reply)
+ * Fixed a vulnerability in the Gmail code (a man in the middle
+ attack could, with some libsoup configurations, trigger a
+ null pointer indirection)
+ * The properties dialog has been split into tabs
+ * A mail summary has been added (requires GMime version 2.0 or
+ superior)
+ * Double-clicking on the icon now displays the mail summary
+ (the double-clicked command has been removed)
+ * The "new mail" command is now executed everytime a mailbox
+ receives one or more new messages
+ * Tracks the latest Gmail change (reported by Vincent Noel)
+ * Gmail support now requires libsoup version 2.2 or superior
+ (which is part of GNOME 2.8)
+ * The manual is now installed in the proper location (Pascal
+ Giard, Christian Krause)
+ * The --with-gconf-schema-file-dir configure argument was
+ ignored: fixed (Julio M. Merino Vidal)
+ * A few minor issues have been fixed
+ * Some cleanups have been performed
+ * The german translations have been updated (Hendrik Brandt)
+ * Added serbian translations (Filip Miletic)
+ * Added bulgarian translations (Vladimir Petkov)
+
0.6.2 09 September 2004
* Added STARTTLS support to the IMAP backend
@@ -17,7 +47,7 @@
* Fixed a typo in the MD5 code which prevented builds on some
platforms (reported by Andy Shaw)
* Automatic mailboxes were also polled: fixed
- * Added german translations (Henrik Brandt)
+ * Added german translations (Hendrik Brandt)
* Added portuguese translations (Duarte Henriques)
* A few minor issues have been fixed
* Some cleanups have been performed
diff --git a/README b/README
@@ -10,7 +10,7 @@ Index
0. About this document
- $Id: README,v 1.21 2004/09/08 23:35:47 jylefort Exp $
+ $Id: README,v 1.22 2004/10/06 17:24:26 jylefort Exp $
Copyright (c) 2003, 2004 Jean-Yves Lefort.
@@ -38,6 +38,7 @@ Index
* automatic detection of mailbox format
* immediate notification (the status icon is updated
within seconds after a mailbox changes)
+ * a mail summary
* HIG 2.0 compliance
2. Installation instructions
diff --git a/TODO b/TODO
@@ -1,2 +1,7 @@
* Check the SSL certificate's hostname against the hostname we used
(RFC 3501, section 11.1)
+* Add a Gmail "Mailbox" option similar to the IMAP one (or if that is
+ not feasible, a checkbutton "Only check inbox").
+* Add a per-mailbox check delay setting (probably GConf only, as that
+ feature is seldomly needed)
+* See if we can add an Evolution data server mailbox backend
diff --git a/acinclude.m4 b/acinclude.m4
@@ -1,35 +1,68 @@
-# $Id: acinclude.m4,v 1.6 2004/06/03 19:15:30 jylefort Exp $
+# $Id: acinclude.m4,v 1.13 2004/09/29 22:15:14 jylefort Exp $
#
-# Copyright (c) 2003 Jean-Yves Lefort.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
#
# This file is part of Mail Notification.
# It may be distributed under the same terms as Mail Notification.
-dnl AC_ARG_G_ASSERTIONS
+### feature handling ##########################################################
+
+dnl MN_FEATURE_VAR_NAME(FEATURE)
dnl
-AC_DEFUN([AC_ARG_G_ASSERTIONS],
-[AC_ARG_ENABLE(assertions,
-AC_HELP_STRING([--disable-assertions],
-[disable GLib assertions (not recommended)]),
-[case "$enableval" in
- yes|no) enable_assertions=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-assertions]) ;;
-esac], [enable_assertions=yes])
+AC_DEFUN([MN_FEATURE_VAR_NAME], [enable_[]translit([$1], -, _)])
-if test $enable_assertions = no; then
- G_ASSERTIONS="-DG_DISABLE_ASSERT"
-else
- G_ASSERTIONS=""
+dnl MN_FEATURE_DISABLE_REASON_VAR_NAME(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_DISABLE_REASON_VAR_NAME], [disable_[]translit([$1], -, _)_reason])
+
+dnl MN_FEATURE_SYMBOL_NAME(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_SYMBOL_NAME], [WITH_[]translit([$1], -a-z, _A-Z)])
+
+dnl MN_FEATURE_ENABLED(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_ENABLED], [test $MN_FEATURE_VAR_NAME([$1]) = yes])
+
+dnl MN_FEATURE_DISABLED(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_DISABLED], [test $MN_FEATURE_VAR_NAME([$1]) = no])
+
+dnl MN_FEATURE_DISABLE(FEATURE, REASON)
+dnl
+AC_DEFUN([MN_FEATURE_DISABLE],
+[AC_MSG_NOTICE([[$2]: forcing --disable-[$1]])
+MN_FEATURE_VAR_NAME([$1])=no
+MN_FEATURE_DISABLE_REASON_VAR_NAME([$1])="([$2])"])
+
+dnl MN_FEATURE_DEFINE(FEATURE)
+dnl
+AC_DEFUN([MN_FEATURE_DEFINE],
+[if MN_FEATURE_ENABLED([$1]); then
+ AC_DEFINE(MN_FEATURE_SYMBOL_NAME([$1]), 1, [Define to 1 if [$1] is enabled])
fi
+])
+
+dnl MN_FEATURES_DEFINE(FEATURES)
+dnl
+AC_DEFUN([MN_FEATURES_DEFINE], [m4_foreach(feature, [$1], [MN_FEATURE_DEFINE(feature)])])
+
+### command line arguments ####################################################
-AC_SUBST(G_ASSERTIONS)])
+dnl MN_ARG_ENABLE(FEATURE, DESCRIPTION, [DEFAULT])
+dnl
+AC_DEFUN([MN_ARG_ENABLE],
+[AC_ARG_ENABLE([$1],
+AS_HELP_STRING(--ifelse([$3], no, enable, disable)-[$1], $2),
+[case "$enableval" in
+ yes|no) MN_FEATURE_VAR_NAME([$1])=$enableval ;;
+ *) AC_MSG_ERROR([bad value $enableval for --enable-[$1]]) ;;
+esac], [MN_FEATURE_VAR_NAME([$1])=ifelse([$3],, yes, [$3])])])
-dnl AC_ARG_COMPILE_WARNINGS
-dnl (only works with gcc)
+dnl MN_ARG_COMPILE_WARNINGS
dnl
-AC_DEFUN([AC_ARG_COMPILE_WARNINGS],
+AC_DEFUN([MN_ARG_COMPILE_WARNINGS],
[AC_ARG_ENABLE(compile-warnings,
-AC_HELP_STRING([--enable-compile-warnings=no|yes|error],
+AS_HELP_STRING([--enable-compile-warnings=no|yes|error],
[enable compiler warnings [[no]]]),
[case "$enableval" in
yes|no|error) enable_compile_warnings=$enableval ;;
@@ -39,8 +72,35 @@ esac], [enable_compile_warnings=no])
if test $enable_compile_warnings = no; then
WARN_CFLAGS=
else
+ # some flags are specific to GCC
WARN_CFLAGS="-Wall -Wcast-align -Wredundant-decls -Wnested-externs -Winline"
test $enable_compile_warnings = error && WARN_CFLAGS="$WARN_CFLAGS -Werror"
fi
AC_SUBST(WARN_CFLAGS)])
+
+### report ####################################################################
+
+dnl MN_REPORT(NAME, VALUE)
+dnl
+AC_DEFUN([MN_REPORT], [ m4_format([%-20s %s], [$1], [$2])])
+
+dnl MN_REPORT_ARG(NAME)
+dnl
+AC_DEFUN([MN_REPORT_ARG], [MN_REPORT([--[$1]], [$translit([$1], -, _)])])
+
+dnl MN_REPORT_ARGS(NAMES)
+dnl
+AC_DEFUN([MN_REPORT_ARGS], [m4_foreach(name, [$1], [MN_REPORT_ARG(name)
+])])
+
+dnl MN_REPORT_FEATURE(FEATURE)
+dnl
+AC_DEFUN([MN_REPORT_FEATURE],
+[MN_REPORT([--enable-[$1]],
+[$MN_FEATURE_VAR_NAME([$1]) $MN_FEATURE_DISABLE_REASON_VAR_NAME([$1])])])
+
+dnl MN_REPORT_FEATURES(FEATURES)
+dnl
+AC_DEFUN([MN_REPORT_FEATURES], [m4_foreach(feature, [$1], [MN_REPORT_FEATURE(feature)
+])])
diff --git a/aclocal.m4 b/aclocal.m4
@@ -11,244 +11,6 @@
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
-dnl AM_GCONF_SOURCE_2
-dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
-dnl (i.e. pass to gconftool-2
-dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
-dnl you should install foo.schemas files
-dnl
-
-AC_DEFUN([AM_GCONF_SOURCE_2],
-[
- if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
- GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
- else
- GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
- fi
-
- AC_ARG_WITH(gconf-source,
- [ --with-gconf-source=sourceaddress Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
-
- AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
- AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
-
- if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
- GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
- fi
-
- AC_ARG_WITH(gconf-schema-file-dir,
- [ --with-gconf-schema-file-dir=dir Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
-
- AC_SUBST(GCONF_SCHEMA_FILE_DIR)
- AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
-
- AC_ARG_ENABLE(schemas-install,
- [ --disable-schemas-install Disable the schemas installation],
- [case "${enableval}" in
- yes) schemas_install=true ;;
- no) schemas_install=false ;;
- *) AC_MSG_ERROR(bad value ${enableval} for --disable-schemas-install) ;;
- esac],[schemas_install=true])
- AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
-])
-
-# Configure paths for GTK+
-# Owen Taylor 1997-2001
-
-dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
-dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
-dnl pass to pkg-config
-dnl
-AC_DEFUN([AM_PATH_GTK_2_0],
-[dnl
-dnl Get the cflags and libraries from pkg-config
-dnl
-AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
- , enable_gtktest=yes)
-
- pkg_config_args=gtk+-2.0
- for module in . $4
- do
- case "$module" in
- gthread)
- pkg_config_args="$pkg_config_args gthread-2.0"
- ;;
- esac
- done
-
- no_gtk=""
-
- AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
-
- if test x$PKG_CONFIG != xno ; then
- if pkg-config --atleast-pkgconfig-version 0.7 ; then
- :
- else
- echo "*** pkg-config too old; version 0.7 or better required."
- no_gtk=yes
- PKG_CONFIG=no
- fi
- else
- no_gtk=yes
- fi
-
- min_gtk_version=ifelse([$1], ,2.0.0,$1)
- AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
-
- if test x$PKG_CONFIG != xno ; then
- ## don't try to run the test against uninstalled libtool libs
- if $PKG_CONFIG --uninstalled $pkg_config_args; then
- echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
- enable_gtktest=no
- fi
-
- if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
- :
- else
- no_gtk=yes
- fi
- fi
-
- if test x"$no_gtk" = x ; then
- GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
- GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
- gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
- gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
- gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
- sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
- if test "x$enable_gtktest" = "xyes" ; then
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$GTK_LIBS $LIBS"
-dnl
-dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
-dnl checks the results of pkg-config to some extent)
-dnl
- rm -f conf.gtktest
- AC_TRY_RUN([
-#include <gtk/gtk.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-int
-main ()
-{
- int major, minor, micro;
- char *tmp_version;
-
- system ("touch conf.gtktest");
-
- /* HP/UX 9 (%@#!) writes to sscanf strings */
- tmp_version = g_strdup("$min_gtk_version");
- if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
- printf("%s, bad version string\n", "$min_gtk_version");
- exit(1);
- }
-
- if ((gtk_major_version != $gtk_config_major_version) ||
- (gtk_minor_version != $gtk_config_minor_version) ||
- (gtk_micro_version != $gtk_config_micro_version))
- {
- printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
- $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- printf ("*** was found! If pkg-config was correct, then it is best\n");
- printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
- printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
- printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
- printf("*** required on your system.\n");
- printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
- printf("*** to point to the correct configuration files\n");
- }
- else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
- (gtk_minor_version != GTK_MINOR_VERSION) ||
- (gtk_micro_version != GTK_MICRO_VERSION))
- {
- printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
- GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
- printf("*** library (version %d.%d.%d)\n",
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- }
- else
- {
- if ((gtk_major_version > major) ||
- ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
- ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
- {
- return 0;
- }
- else
- {
- printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
- gtk_major_version, gtk_minor_version, gtk_micro_version);
- printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
- major, minor, micro);
- printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
- printf("***\n");
- printf("*** If you have already installed a sufficiently new version, this error\n");
- printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
- printf("*** being found. The easiest way to fix this is to remove the old version\n");
- printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
- printf("*** correct copy of pkg-config. (In this case, you will have to\n");
- printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
- printf("*** so that the correct libraries are found at run-time))\n");
- }
- }
- return 1;
-}
-],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- if test "x$no_gtk" = x ; then
- AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
- ifelse([$2], , :, [$2])
- else
- AC_MSG_RESULT(no)
- if test "$PKG_CONFIG" = "no" ; then
- echo "*** A new enough version of pkg-config was not found."
- echo "*** See http://pkgconfig.sourceforge.net"
- else
- if test -f conf.gtktest ; then
- :
- else
- echo "*** Could not run GTK+ test program, checking why..."
- ac_save_CFLAGS="$CFLAGS"
- ac_save_LIBS="$LIBS"
- CFLAGS="$CFLAGS $GTK_CFLAGS"
- LIBS="$LIBS $GTK_LIBS"
- AC_TRY_LINK([
-#include <gtk/gtk.h>
-#include <stdio.h>
-], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
- [ echo "*** The test program compiled, but did not run. This usually means"
- echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
- echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
- echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
- echo "*** to the installed location Also, make sure you have run ldconfig if that"
- echo "*** is required on your system"
- echo "***"
- echo "*** If you have an old version installed, it is best to remove it, although"
- echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
- [ echo "*** The test program failed to compile or link. See the file config.log for the"
- echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
- CFLAGS="$ac_save_CFLAGS"
- LIBS="$ac_save_LIBS"
- fi
- fi
- GTK_CFLAGS=""
- GTK_LIBS=""
- ifelse([$3], , :, [$3])
- fi
- AC_SUBST(GTK_CFLAGS)
- AC_SUBST(GTK_LIBS)
- rm -f conf.gtktest
-])
-
# Copyright (C) 1995-2002 Free Software Foundation, Inc.
# Copyright (C) 2001-2003 Red Hat, Inc.
#
@@ -1791,4 +1553,242 @@ AC_SUBST([INSTALL_STRIP_PROGRAM])])
m4_include([m4/openssl.m4])
m4_include([m4/sasl2.m4])
+dnl AM_GCONF_SOURCE_2
+dnl Defines GCONF_SCHEMA_CONFIG_SOURCE which is where you should install schemas
+dnl (i.e. pass to gconftool-2
+dnl Defines GCONF_SCHEMA_FILE_DIR which is a filesystem directory where
+dnl you should install foo.schemas files
+dnl
+
+AC_DEFUN([AM_GCONF_SOURCE_2],
+[
+ if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
+ GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
+ else
+ GCONF_SCHEMA_CONFIG_SOURCE=$GCONF_SCHEMA_INSTALL_SOURCE
+ fi
+
+ AC_ARG_WITH(gconf-source,
+ [ --with-gconf-source=sourceaddress Config database for installing schema files.],GCONF_SCHEMA_CONFIG_SOURCE="$withval",)
+
+ AC_SUBST(GCONF_SCHEMA_CONFIG_SOURCE)
+ AC_MSG_RESULT([Using config source $GCONF_SCHEMA_CONFIG_SOURCE for schema installation])
+
+ if test "x$GCONF_SCHEMA_FILE_DIR" = "x"; then
+ GCONF_SCHEMA_FILE_DIR='$(sysconfdir)/gconf/schemas'
+ fi
+
+ AC_ARG_WITH(gconf-schema-file-dir,
+ [ --with-gconf-schema-file-dir=dir Directory for installing schema files.],GCONF_SCHEMA_FILE_DIR="$withval",)
+
+ AC_SUBST(GCONF_SCHEMA_FILE_DIR)
+ AC_MSG_RESULT([Using $GCONF_SCHEMA_FILE_DIR as install directory for schema files])
+
+ AC_ARG_ENABLE(schemas-install,
+ [ --disable-schemas-install Disable the schemas installation],
+ [case "${enableval}" in
+ yes) schemas_install=true ;;
+ no) schemas_install=false ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for --disable-schemas-install) ;;
+ esac],[schemas_install=true])
+ AM_CONDITIONAL(GCONF_SCHEMAS_INSTALL, test x$schemas_install = xtrue)
+])
+
+# Configure paths for GTK+
+# Owen Taylor 1997-2001
+
+dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
+dnl Test for GTK+, and define GTK_CFLAGS and GTK_LIBS, if gthread is specified in MODULES,
+dnl pass to pkg-config
+dnl
+AC_DEFUN([AM_PATH_GTK_2_0],
+[dnl
+dnl Get the cflags and libraries from pkg-config
+dnl
+AC_ARG_ENABLE(gtktest, [ --disable-gtktest do not try to compile and run a test GTK+ program],
+ , enable_gtktest=yes)
+
+ pkg_config_args=gtk+-2.0
+ for module in . $4
+ do
+ case "$module" in
+ gthread)
+ pkg_config_args="$pkg_config_args gthread-2.0"
+ ;;
+ esac
+ done
+
+ no_gtk=""
+
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+
+ if test x$PKG_CONFIG != xno ; then
+ if pkg-config --atleast-pkgconfig-version 0.7 ; then
+ :
+ else
+ echo "*** pkg-config too old; version 0.7 or better required."
+ no_gtk=yes
+ PKG_CONFIG=no
+ fi
+ else
+ no_gtk=yes
+ fi
+
+ min_gtk_version=ifelse([$1], ,2.0.0,$1)
+ AC_MSG_CHECKING(for GTK+ - version >= $min_gtk_version)
+
+ if test x$PKG_CONFIG != xno ; then
+ ## don't try to run the test against uninstalled libtool libs
+ if $PKG_CONFIG --uninstalled $pkg_config_args; then
+ echo "Will use uninstalled version of GTK+ found in PKG_CONFIG_PATH"
+ enable_gtktest=no
+ fi
+
+ if $PKG_CONFIG --atleast-version $min_gtk_version $pkg_config_args; then
+ :
+ else
+ no_gtk=yes
+ fi
+ fi
+
+ if test x"$no_gtk" = x ; then
+ GTK_CFLAGS=`$PKG_CONFIG $pkg_config_args --cflags`
+ GTK_LIBS=`$PKG_CONFIG $pkg_config_args --libs`
+ gtk_config_major_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
+ gtk_config_minor_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
+ gtk_config_micro_version=`$PKG_CONFIG --modversion gtk+-2.0 | \
+ sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
+ if test "x$enable_gtktest" = "xyes" ; then
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ LIBS="$GTK_LIBS $LIBS"
+dnl
+dnl Now check if the installed GTK+ is sufficiently new. (Also sanity
+dnl checks the results of pkg-config to some extent)
+dnl
+ rm -f conf.gtktest
+ AC_TRY_RUN([
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+int
+main ()
+{
+ int major, minor, micro;
+ char *tmp_version;
+
+ system ("touch conf.gtktest");
+
+ /* HP/UX 9 (%@#!) writes to sscanf strings */
+ tmp_version = g_strdup("$min_gtk_version");
+ if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
+ printf("%s, bad version string\n", "$min_gtk_version");
+ exit(1);
+ }
+
+ if ((gtk_major_version != $gtk_config_major_version) ||
+ (gtk_minor_version != $gtk_config_minor_version) ||
+ (gtk_micro_version != $gtk_config_micro_version))
+ {
+ printf("\n*** 'pkg-config --modversion gtk+-2.0' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
+ $gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ printf ("*** was found! If pkg-config was correct, then it is best\n");
+ printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
+ printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
+ printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
+ printf("*** required on your system.\n");
+ printf("*** If pkg-config was wrong, set the environment variable PKG_CONFIG_PATH\n");
+ printf("*** to point to the correct configuration files\n");
+ }
+ else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
+ (gtk_minor_version != GTK_MINOR_VERSION) ||
+ (gtk_micro_version != GTK_MICRO_VERSION))
+ {
+ printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
+ GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
+ printf("*** library (version %d.%d.%d)\n",
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ }
+ else
+ {
+ if ((gtk_major_version > major) ||
+ ((gtk_major_version == major) && (gtk_minor_version > minor)) ||
+ ((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
+ {
+ return 0;
+ }
+ else
+ {
+ printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
+ gtk_major_version, gtk_minor_version, gtk_micro_version);
+ printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
+ major, minor, micro);
+ printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
+ printf("***\n");
+ printf("*** If you have already installed a sufficiently new version, this error\n");
+ printf("*** probably means that the wrong copy of the pkg-config shell script is\n");
+ printf("*** being found. The easiest way to fix this is to remove the old version\n");
+ printf("*** of GTK+, but you can also set the PKG_CONFIG environment to point to the\n");
+ printf("*** correct copy of pkg-config. (In this case, you will have to\n");
+ printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
+ printf("*** so that the correct libraries are found at run-time))\n");
+ }
+ }
+ return 1;
+}
+],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ if test "x$no_gtk" = x ; then
+ AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
+ ifelse([$2], , :, [$2])
+ else
+ AC_MSG_RESULT(no)
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** A new enough version of pkg-config was not found."
+ echo "*** See http://pkgconfig.sourceforge.net"
+ else
+ if test -f conf.gtktest ; then
+ :
+ else
+ echo "*** Could not run GTK+ test program, checking why..."
+ ac_save_CFLAGS="$CFLAGS"
+ ac_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $GTK_CFLAGS"
+ LIBS="$LIBS $GTK_LIBS"
+ AC_TRY_LINK([
+#include <gtk/gtk.h>
+#include <stdio.h>
+], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
+ [ echo "*** The test program compiled, but did not run. This usually means"
+ echo "*** that the run-time linker is not finding GTK+ or finding the wrong"
+ echo "*** version of GTK+. If it is not finding GTK+, you'll need to set your"
+ echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
+ echo "*** to the installed location Also, make sure you have run ldconfig if that"
+ echo "*** is required on your system"
+ echo "***"
+ echo "*** If you have an old version installed, it is best to remove it, although"
+ echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH" ],
+ [ echo "*** The test program failed to compile or link. See the file config.log for the"
+ echo "*** exact error that occured. This usually means GTK+ is incorrectly installed."])
+ CFLAGS="$ac_save_CFLAGS"
+ LIBS="$ac_save_LIBS"
+ fi
+ fi
+ GTK_CFLAGS=""
+ GTK_LIBS=""
+ ifelse([$3], , :, [$3])
+ fi
+ AC_SUBST(GTK_CFLAGS)
+ AC_SUBST(GTK_LIBS)
+ rm -f conf.gtktest
+])
+
m4_include([acinclude.m4])
diff --git a/art/Makefile.in b/art/Makefile.in
@@ -84,6 +84,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -91,9 +93,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -167,6 +166,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/config.h.in b/config.h.in
@@ -6,45 +6,12 @@
/* Define to the gettext package name */
#undef GETTEXT_PACKAGE
-/* Define to 1 if you have the `atoi' function. */
-#undef HAVE_ATOI
-
/* Define to 1 if you have the `bind_textdomain_codeset' function. */
#undef HAVE_BIND_TEXTDOMAIN_CODESET
-/* Define to 1 if you have the `close' function. */
-#undef HAVE_CLOSE
-
-/* Define to 1 if you have the `connect' function. */
-#undef HAVE_CONNECT
-
/* Define to 1 if you have the `dcgettext' function. */
#undef HAVE_DCGETTEXT
-/* Define to 1 if you have the <errno.h> header file. */
-#undef HAVE_ERRNO_H
-
-/* Define to 1 if you have the `exit' function. */
-#undef HAVE_EXIT
-
-/* Define to 1 if you have the `freeaddrinfo' function. */
-#undef HAVE_FREEADDRINFO
-
-/* Define to 1 if you have the `gai_strerror' function. */
-#undef HAVE_GAI_STRERROR
-
-/* Define to 1 if you have the `getaddrinfo' function. */
-#undef HAVE_GETADDRINFO
-
-/* Define to 1 if you have the `getnameinfo' function. */
-#undef HAVE_GETNAMEINFO
-
-/* Define to 1 if you have the `getpeername' function. */
-#undef HAVE_GETPEERNAME
-
-/* Define to 1 if you have the `getsockname' function. */
-#undef HAVE_GETSOCKNAME
-
/* Define if the GNU gettext() function is already present or preinstalled. */
#undef HAVE_GETTEXT
@@ -57,78 +24,33 @@
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
-/* Define to 1 if you have the `memcpy' function. */
-#undef HAVE_MEMCPY
-
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the `read' function. */
-#undef HAVE_READ
-
-/* Define to 1 if you have the `signal' function. */
-#undef HAVE_SIGNAL
-
-/* Define to 1 if you have the <signal.h> header file. */
-#undef HAVE_SIGNAL_H
-
-/* Define to 1 if you have the `sleep' function. */
-#undef HAVE_SLEEP
-
-/* Define to 1 if you have the `socket' function. */
-#undef HAVE_SOCKET
-
-/* Define to 1 if you have the `sscanf' function. */
-#undef HAVE_SSCANF
-
-/* Define to 1 if you have the <stdarg.h> header file. */
-#undef HAVE_STDARG_H
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
-/* Define to 1 if you have the <stdio.h> header file. */
-#undef HAVE_STDIO_H
-
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
-/* Define to 1 if you have the `strcmp' function. */
-#undef HAVE_STRCMP
-
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
-/* Define to 1 if you have the `strlen' function. */
-#undef HAVE_STRLEN
-
-/* Define to 1 if you have the `strncmp' function. */
-#undef HAVE_STRNCMP
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
+/* Define to 1 if you have the `timegm' function. */
+#undef HAVE_TIMEGM
+
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
-/* Define to 1 if you have the `write' function. */
-#undef HAVE_WRITE
-
/* Name of package */
#undef PACKAGE
@@ -153,34 +75,37 @@
/* Version number of package */
#undef VERSION
-/* Define to 1 if Gmail support is enabled */
+/* Define to 1 if [gmail] is enabled */
#undef WITH_GMAIL
-/* Define to 1 if IMAP support is enabled */
+/* Define to 1 if [imap] is enabled */
#undef WITH_IMAP
-/* Define to 1 if IPv6 support is enabled */
+/* Define to 1 if [ipv6] is enabled */
#undef WITH_IPV6
-/* Define to 1 if Maildir support is enabled */
+/* Define to 1 if [maildir] is enabled */
#undef WITH_MAILDIR
-/* Define to 1 if mbox support is enabled */
+/* Define to 1 if [mbox] is enabled */
#undef WITH_MBOX
-/* Define to 1 if MH support is enabled */
+/* Define to 1 if [mh] is enabled */
#undef WITH_MH
-/* Define to 1 if POP3 support is enabled */
+/* Define to 1 if [mime] is enabled */
+#undef WITH_MIME
+
+/* Define to 1 if [pop3] is enabled */
#undef WITH_POP3
-/* Define to 1 if SASL support is enabled */
+/* Define to 1 if [sasl] is enabled */
#undef WITH_SASL
-/* Define to 1 if SSL/TLS support is enabled */
+/* Define to 1 if [ssl] is enabled */
#undef WITH_SSL
-/* Define to 1 if Sylpheed support is enabled */
+/* Define to 1 if [sylpheed] is enabled */
#undef WITH_SYLPHEED
/* Number of bits in a file offset, on hosts where this is settable. */
diff --git a/configure b/configure
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.59 for mail-notification 0.6.2.
+# Generated by GNU Autoconf 2.59 for mail-notification 0.7.0.
#
# Report bugs to <jylefort@brutele.be>.
#
@@ -269,8 +269,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='mail-notification'
PACKAGE_TARNAME='mail-notification'
-PACKAGE_VERSION='0.6.2'
-PACKAGE_STRING='mail-notification 0.6.2'
+PACKAGE_VERSION='0.7.0'
+PACKAGE_STRING='mail-notification 0.7.0'
PACKAGE_BUGREPORT='jylefort@brutele.be'
ac_unique_file="src/mn-main.c"
@@ -311,7 +311,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS G_ASSERTIONS WARN_CFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL PKG_CONFIG GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONFTOOL OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS SOUP_CFLAGS SOUP_LIBS ORBIT_IDL LIBBONOBO_IDL BONOBO_ACTIVATION_IDL GOB2 WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_IMAP_TRUE WITH_IMAP_FALSE WITH_POP3_OR_IMAP_TRUE WITH_POP3_OR_IMAP_FALSE WITH_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE HAVE_SOUP_TRUE HAVE_SOUP_FALSE WITH_REGRESSION_TESTS_TRUE WITH_REGRESSION_TESTS_FALSE LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS WARN_CFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GETTEXT_PACKAGE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CPP EGREP USE_NLS MSGFMT GMSGFMT XGETTEXT CATALOGS CATOBJEXT DATADIRNAME GMOFILES INSTOBJEXT INTLLIBS PO_IN_DATADIR_TRUE PO_IN_DATADIR_FALSE POFILES POSUB MKINSTALLDIRS INTLTOOL_DESKTOP_RULE INTLTOOL_DIRECTORY_RULE INTLTOOL_KEYS_RULE INTLTOOL_PROP_RULE INTLTOOL_OAF_RULE INTLTOOL_PONG_RULE INTLTOOL_SERVER_RULE INTLTOOL_SHEET_RULE INTLTOOL_SOUNDLIST_RULE INTLTOOL_UI_RULE INTLTOOL_XAM_RULE INTLTOOL_KBD_RULE INTLTOOL_XML_RULE INTLTOOL_CAVES_RULE INTLTOOL_SCHEMAS_RULE INTLTOOL_THEME_RULE INTLTOOL_EXTRACT INTLTOOL_MERGE INTLTOOL_UPDATE INTLTOOL_PERL PKG_CONFIG GTK_CFLAGS GTK_LIBS GNOME_CFLAGS GNOME_LIBS GCONF_SCHEMA_CONFIG_SOURCE GCONF_SCHEMA_FILE_DIR GCONF_SCHEMAS_INSTALL_TRUE GCONF_SCHEMAS_INSTALL_FALSE GCONFTOOL ORBIT_IDL LIBBONOBO_IDL BONOBO_ACTIVATION_IDL GOB2 OPENSSL_CFLAGS OPENSSL_LIBS SASL_CFLAGS SASL_LIBS SOUP_CFLAGS SOUP_LIBS GMIME_CFLAGS GMIME_LIBS WITH_MBOX_TRUE WITH_MBOX_FALSE WITH_MH_TRUE WITH_MH_FALSE WITH_MAILDIR_TRUE WITH_MAILDIR_FALSE WITH_POP3_TRUE WITH_POP3_FALSE WITH_IMAP_TRUE WITH_IMAP_FALSE WITH_POP3_OR_IMAP_TRUE WITH_POP3_OR_IMAP_FALSE WITH_SSL_TRUE WITH_SSL_FALSE WITH_SASL_TRUE WITH_SASL_FALSE WITH_SYLPHEED_TRUE WITH_SYLPHEED_FALSE WITH_GMAIL_TRUE WITH_GMAIL_FALSE WITH_MIME_TRUE WITH_MIME_FALSE WITH_REGRESSION_TESTS_TRUE WITH_REGRESSION_TESTS_FALSE LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -780,7 +780,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures mail-notification 0.6.2 to adapt to many kinds of systems.
+\`configure' configures mail-notification 0.7.0 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -842,7 +842,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of mail-notification 0.6.2:";;
+ short | recursive ) echo "Configuration of mail-notification 0.7.0:";;
esac
cat <<\_ACEOF
@@ -859,11 +859,11 @@ Optional Features:
--disable-sylpheed disable Sylpheed support
--disable-gmail disable Gmail support
--disable-ipv6 disable IPv6 support
- --disable-assertions disable GLib assertions (not recommended)
+ --disable-mime disable MIME support
--enable-compile-warnings=no|yes|error
enable compiler warnings [no]
--enable-regression-tests
- build and run regression tests [no]
+ build and run regression tests
--enable-maintainer-mode enable make rules and dependencies not useful
(and sometimes confusing) to the casual installer
--disable-dependency-tracking speeds up one-time build
@@ -986,7 +986,7 @@ fi
test -n "$ac_init_help" && exit 0
if $ac_init_version; then
cat <<\_ACEOF
-mail-notification configure 0.6.2
+mail-notification configure 0.7.0
generated by GNU Autoconf 2.59
Copyright (C) 2003 Free Software Foundation, Inc.
@@ -1000,7 +1000,7 @@ cat >&5 <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by mail-notification $as_me 0.6.2, which was
+It was created by mail-notification $as_me 0.7.0, which was
generated by GNU Autoconf 2.59. Invocation command line was
$ $0 $@
@@ -1354,7 +1354,6 @@ esac
else
enable_mbox=yes
fi;
-
# Check whether --enable-mh or --disable-mh was given.
if test "${enable_mh+set}" = set; then
enableval="$enable_mh"
@@ -1367,7 +1366,6 @@ esac
else
enable_mh=yes
fi;
-
# Check whether --enable-maildir or --disable-maildir was given.
if test "${enable_maildir+set}" = set; then
enableval="$enable_maildir"
@@ -1380,7 +1378,6 @@ esac
else
enable_maildir=yes
fi;
-
# Check whether --enable-pop3 or --disable-pop3 was given.
if test "${enable_pop3+set}" = set; then
enableval="$enable_pop3"
@@ -1393,7 +1390,6 @@ esac
else
enable_pop3=yes
fi;
-
# Check whether --enable-imap or --disable-imap was given.
if test "${enable_imap+set}" = set; then
enableval="$enable_imap"
@@ -1406,7 +1402,6 @@ esac
else
enable_imap=yes
fi;
-
# Check whether --enable-ssl or --disable-ssl was given.
if test "${enable_ssl+set}" = set; then
enableval="$enable_ssl"
@@ -1419,7 +1414,6 @@ esac
else
enable_ssl=yes
fi;
-
# Check whether --enable-sasl or --disable-sasl was given.
if test "${enable_sasl+set}" = set; then
enableval="$enable_sasl"
@@ -1432,7 +1426,6 @@ esac
else
enable_sasl=yes
fi;
-
# Check whether --enable-sylpheed or --disable-sylpheed was given.
if test "${enable_sylpheed+set}" = set; then
enableval="$enable_sylpheed"
@@ -1445,7 +1438,6 @@ esac
else
enable_sylpheed=yes
fi;
-
# Check whether --enable-gmail or --disable-gmail was given.
if test "${enable_gmail+set}" = set; then
enableval="$enable_gmail"
@@ -1458,7 +1450,6 @@ esac
else
enable_gmail=yes
fi;
-
# Check whether --enable-ipv6 or --disable-ipv6 was given.
if test "${enable_ipv6+set}" = set; then
enableval="$enable_ipv6"
@@ -1471,27 +1462,19 @@ esac
else
enable_ipv6=yes
fi;
-
-# Check whether --enable-assertions or --disable-assertions was given.
-if test "${enable_assertions+set}" = set; then
- enableval="$enable_assertions"
+# Check whether --enable-mime or --disable-mime was given.
+if test "${enable_mime+set}" = set; then
+ enableval="$enable_mime"
case "$enableval" in
- yes|no) enable_assertions=$enableval ;;
- *) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-assertions" >&5
-echo "$as_me: error: bad value $enableval for --enable-assertions" >&2;}
+ yes|no) enable_mime=$enableval ;;
+ *) { { echo "$as_me:$LINENO: error: bad value $enableval for --enable-mime" >&5
+echo "$as_me: error: bad value $enableval for --enable-mime" >&2;}
{ (exit 1); exit 1; }; } ;;
esac
else
- enable_assertions=yes
+ enable_mime=yes
fi;
-if test $enable_assertions = no; then
- G_ASSERTIONS="-DG_DISABLE_ASSERT"
-else
- G_ASSERTIONS=""
-fi
-
-
# Check whether --enable-compile-warnings or --disable-compile-warnings was given.
if test "${enable_compile_warnings+set}" = set; then
enableval="$enable_compile_warnings"
@@ -1508,12 +1491,12 @@ fi;
if test $enable_compile_warnings = no; then
WARN_CFLAGS=
else
+ # some flags are specific to GCC
WARN_CFLAGS="-Wall -Wcast-align -Wredundant-decls -Wnested-externs -Winline"
test $enable_compile_warnings = error && WARN_CFLAGS="$WARN_CFLAGS -Werror"
fi
-
# Check whether --enable-regression-tests or --disable-regression-tests was given.
if test "${enable_regression_tests+set}" = set; then
enableval="$enable_regression_tests"
@@ -1828,7 +1811,7 @@ fi
# Define the identity of the package.
PACKAGE='mail-notification'
- VERSION='0.6.2'
+ VERSION='0.7.0'
cat >>confdefs.h <<_ACEOF
@@ -1991,7 +1974,7 @@ _ACEOF
-ALL_LINGUAS="de fr pt ru"
+ALL_LINGUAS="bg de fr pt ru sr sr@Latn"
DEPDIR="${am__leading_dot}deps"
ac_config_commands="$ac_config_commands depfiles"
@@ -6304,38 +6287,30 @@ rm -f conftest*
fi
-# the order of these tests matters
-
-
-
-
-
-
-
-
-for ac_header in errno.h signal.h stdarg.h stdio.h stdlib.h string.h sys/types.h unistd.h
-do
-as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
+# check for ANSI C headers
+echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6
+if test "${ac_cv_header_stdc+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
-fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
else
- # Is the header compilable?
-echo "$as_me:$LINENO: checking $ac_header usability" >&5
-echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-$ac_includes_default
-#include <$ac_header>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
_ACEOF
rm -f conftest.$ac_objext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -6359,117 +6334,61 @@ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_header_compiler=yes
+ ac_cv_header_stdc=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_header_compiler=no
+ac_cv_header_stdc=no
fi
rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
-echo "${ECHO_T}$ac_header_compiler" >&6
-# Is the header present?
-echo "$as_me:$LINENO: checking $ac_header presence" >&5
-echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6
-cat >conftest.$ac_ext <<_ACEOF
+if test $ac_cv_header_stdc = yes; then
+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <$ac_header>
+#include <string.h>
+
_ACEOF
-if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5
- (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } >/dev/null; then
- if test -s conftest.err; then
- ac_cpp_err=$ac_c_preproc_warn_flag
- ac_cpp_err=$ac_cpp_err$ac_c_werror_flag
- else
- ac_cpp_err=
- fi
-else
- ac_cpp_err=yes
-fi
-if test -z "$ac_cpp_err"; then
- ac_header_preproc=yes
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "memchr" >/dev/null 2>&1; then
+ :
else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
- ac_header_preproc=no
+ ac_cv_header_stdc=no
fi
-rm -f conftest.err conftest.$ac_ext
-echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
-echo "${ECHO_T}$ac_header_preproc" >&6
+rm -f conftest*
-# So? What about this header?
-case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
- yes:no: )
- { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
-echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
- ac_header_preproc=yes
- ;;
- no:yes:* )
- { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
-echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
-echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
-echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
-echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
-echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
- { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
-echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
- (
- cat <<\_ASBOX
-## ---------------------------------- ##
-## Report this to jylefort@brutele.be ##
-## ---------------------------------- ##
-_ASBOX
- ) |
- sed "s/^/$as_me: WARNING: /" >&2
- ;;
-esac
-echo "$as_me:$LINENO: checking for $ac_header" >&5
-echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6
-if eval "test \"\${$as_ac_Header+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- eval "$as_ac_Header=\$ac_header_preproc"
fi
-echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5
-echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6
-fi
-if test `eval echo '${'$as_ac_Header'}'` = yes; then
- cat >>confdefs.h <<_ACEOF
-#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+if test $ac_cv_header_stdc = yes; then
+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "free" >/dev/null 2>&1; then
+ :
else
- { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
- { (exit 1); exit 1; }; }
+ ac_cv_header_stdc=no
fi
+rm -f conftest*
-done
+fi
-echo "$as_me:$LINENO: checking for sys/uio.h" >&5
-echo $ECHO_N "checking for sys/uio.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_uio_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
+if test $ac_cv_header_stdc = yes; then
+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+ if test "$cross_compiling" = yes; then
+ :
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
@@ -6477,55 +6396,78 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <sys/types.h>
+#include <ctype.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+ (('a' <= (c) && (c) <= 'i') \
+ || ('j' <= (c) && (c) <= 'r') \
+ || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
-#include <sys/uio.h>
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+ int i;
+ for (i = 0; i < 256; i++)
+ if (XOR (islower (i), ISLOWER (i))
+ || toupper (i) != TOUPPER (i))
+ exit(2);
+ exit (0);
+}
_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
+rm -f conftest$ac_exeext
+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); }; }; then
- ac_cv_header_sys_uio_h=yes
+ :
else
- echo "$as_me: failed program was:" >&5
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
-ac_cv_header_sys_uio_h=no
+( exit $ac_status )
+ac_cv_header_stdc=no
fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_uio_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_uio_h" >&6
-if test $ac_cv_header_sys_uio_h = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
+fi
+fi
+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+if test $ac_cv_header_stdc != yes; then
+ { { echo "$as_me:$LINENO: error: ANSI C headers not present" >&5
+echo "$as_me: error: ANSI C headers not present" >&2;}
{ (exit 1); exit 1; }; }
fi
+# timegm() is non-standard, define HAVE_TIMEGM if it is present
-echo "$as_me:$LINENO: checking for sys/socket.h" >&5
-echo $ECHO_N "checking for sys/socket.h... $ECHO_C" >&6
-if test "${ac_cv_header_sys_socket_h+set}" = set; then
+for ac_func in timegm
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
+if eval "test \"\${$as_ac_var+set}\" = set"; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
cat >conftest.$ac_ext <<_ACEOF
@@ -6534,276 +6476,9 @@ _ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-
-#include <sys/socket.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_sys_socket_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_sys_socket_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_sys_socket_h" >&5
-echo "${ECHO_T}$ac_cv_header_sys_socket_h" >&6
-if test $ac_cv_header_sys_socket_h = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-echo "$as_me:$LINENO: checking for netdb.h" >&5
-echo $ECHO_N "checking for netdb.h... $ECHO_C" >&6
-if test "${ac_cv_header_netdb_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netdb.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_netdb_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_netdb_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_netdb_h" >&5
-echo "${ECHO_T}$ac_cv_header_netdb_h" >&6
-if test $ac_cv_header_netdb_h = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-echo "$as_me:$LINENO: checking for netinet/in.h" >&5
-echo $ECHO_N "checking for netinet/in.h... $ECHO_C" >&6
-if test "${ac_cv_header_netinet_in_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-
-#include <netinet/in.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_netinet_in_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_netinet_in_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_netinet_in_h" >&5
-echo "${ECHO_T}$ac_cv_header_netinet_in_h" >&6
-if test $ac_cv_header_netinet_in_h = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-echo "$as_me:$LINENO: checking for arpa/inet.h" >&5
-echo $ECHO_N "checking for arpa/inet.h... $ECHO_C" >&6
-if test "${ac_cv_header_arpa_inet_h+set}" = set; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-
-#include <arpa/inet.h>
-_ACEOF
-rm -f conftest.$ac_objext
-if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
- (eval $ac_compile) 2>conftest.er1
- ac_status=$?
- grep -v '^ *+' conftest.er1 >conftest.err
- rm -f conftest.er1
- cat conftest.err >&5
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); } &&
- { ac_try='test -z "$ac_c_werror_flag"
- || test ! -s conftest.err'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; } &&
- { ac_try='test -s conftest.$ac_objext'
- { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
- (eval $ac_try) 2>&5
- ac_status=$?
- echo "$as_me:$LINENO: \$? = $ac_status" >&5
- (exit $ac_status); }; }; then
- ac_cv_header_arpa_inet_h=yes
-else
- echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-ac_cv_header_arpa_inet_h=no
-fi
-rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-echo "$as_me:$LINENO: result: $ac_cv_header_arpa_inet_h" >&5
-echo "${ECHO_T}$ac_cv_header_arpa_inet_h" >&6
-if test $ac_cv_header_arpa_inet_h = yes; then
- :
-else
- { { echo "$as_me:$LINENO: error: header not found" >&5
-echo "$as_me: error: header not found" >&2;}
- { (exit 1); exit 1; }; }
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-for ac_func in atoi close connect exit freeaddrinfo gai_strerror getaddrinfo getnameinfo getpeername getsockname memcpy memset read signal sleep socket sscanf strchr strcmp strlen strncmp strstr write
-do
-as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
-echo "$as_me:$LINENO: checking for $ac_func" >&5
-echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6
-if eval "test \"\${$as_ac_var+set}\" = set"; then
- echo $ECHO_N "(cached) $ECHO_C" >&6
-else
- cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h. */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h. */
-/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
- For example, HP-UX 11i <limits.h> declares gettimeofday. */
-#define $ac_func innocuous_$ac_func
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
@@ -6885,15 +6560,11 @@ if test `eval echo '${'$as_ac_var'}'` = yes; then
#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
-else
- { { echo "$as_me:$LINENO: error: library function not found" >&5
-echo "$as_me: error: library function not found" >&2;}
- { (exit 1); exit 1; }; }
fi
done
-### build dependencies
+### mandatory libraries and programs
# Check whether --enable-gtktest or --disable-gtktest was given.
if test "${enable_gtktest+set}" = set; then
@@ -7300,9 +6971,6 @@ echo "$as_me: error: unable to find the GNOME libraries" >&2;}
fi
-
-
-
if test "x$GCONF_SCHEMA_INSTALL_SOURCE" = "x"; then
GCONF_SCHEMA_CONFIG_SOURCE=`gconftool-2 --get-default-source`
else
@@ -7405,18 +7073,76 @@ echo "$as_me: error: unable to find the gconftool-2 program" >&2;}
{ (exit 1); exit 1; }; }
fi
+ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
+
+
+LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
+
+
+BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
+
+
+### optional libraries
+
+# not needed by end-users, as files generated by GOB are distributed
+# Extract the first word of "gob2", so it can be a program name with args.
+set dummy gob2; ac_word=$2
+echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
+if test "${ac_cv_path_GOB2+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ case $GOB2 in
+ [\\/]* | ?:[\\/]*)
+ ac_cv_path_GOB2="$GOB2" # Let the user override the test with a path.
+ ;;
+ *)
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_path_GOB2="$as_dir/$ac_word$ac_exec_ext"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+
+ ;;
+esac
+fi
+GOB2=$ac_cv_path_GOB2
+
+if test -n "$GOB2"; then
+ echo "$as_me:$LINENO: result: $GOB2" >&5
+echo "${ECHO_T}$GOB2" >&6
+else
+ echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6
+fi
+
+
if test $enable_pop3 = no && test $enable_imap = no; then
if test $enable_ssl = yes; then
{ echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-ssl" >&5
echo "$as_me: POP3 and IMAP support disabled: forcing --disable-ssl" >&6;}
- enable_ssl=no
- disable_ssl_reason="(not needed)"
+enable_ssl=no
+disable_ssl_reason="(POP3 and IMAP support disabled)"
fi
if test $enable_sasl = yes; then
{ echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-sasl" >&5
echo "$as_me: POP3 and IMAP support disabled: forcing --disable-sasl" >&6;}
- enable_sasl=no
- disable_sasl_reason="(not needed)"
+enable_sasl=no
+disable_sasl_reason="(POP3 and IMAP support disabled)"
+ fi
+ if test $enable_ipv6 = yes; then
+ { echo "$as_me:$LINENO: POP3 and IMAP support disabled: forcing --disable-ipv6" >&5
+echo "$as_me: POP3 and IMAP support disabled: forcing --disable-ipv6" >&6;}
+enable_ipv6=no
+disable_ipv6_reason="(POP3 and IMAP support disabled)"
fi
fi
@@ -7494,14 +7220,15 @@ if test $found = yes; then
else
OPENSSL_CFLAGS=""
OPENSSL_LIBS=""
- { echo "$as_me:$LINENO: WARNING: unable to find the OpenSSL library: forcing --disable-ssl" >&5
-echo "$as_me: WARNING: unable to find the OpenSSL library: forcing --disable-ssl" >&2;}; enable_ssl=no; disable_ssl_reason="(OpenSSL not found)"
+ { echo "$as_me:$LINENO: OpenSSL not found: forcing --disable-ssl" >&5
+echo "$as_me: OpenSSL not found: forcing --disable-ssl" >&6;}
+enable_ssl=no
+disable_ssl_reason="(OpenSSL not found)"
fi
fi
-
if test $enable_sasl = yes; then
SASL_CFLAGS=""
SASL_LIBS="-lsasl2"
@@ -7571,15 +7298,16 @@ if test $found = yes; then
else
SASL_CFLAGS=""
SASL_LIBS=""
- { echo "$as_me:$LINENO: WARNING: unable to find the Cyrus SASL library: forcing --disable-sasl" >&5
-echo "$as_me: WARNING: unable to find the Cyrus SASL library: forcing --disable-sasl" >&2;}; enable_sasl=no; disable_sasl_reason="(Cyrus SASL not found)"
+ { echo "$as_me:$LINENO: Cyrus SASL not found: forcing --disable-sasl" >&5
+echo "$as_me: Cyrus SASL not found: forcing --disable-sasl" >&6;}
+enable_sasl=no
+disable_sasl_reason="(Cyrus SASL not found)"
fi
fi
-have_soup=no
if test $enable_gmail = yes; then
succeeded=no
@@ -7635,23 +7363,23 @@ fi
else
PKG_CONFIG_MIN_VERSION=0.9.0
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
- echo "$as_me:$LINENO: checking for soup-2.0" >&5
-echo $ECHO_N "checking for soup-2.0... $ECHO_C" >&6
+ echo "$as_me:$LINENO: checking for libsoup-2.2" >&5
+echo $ECHO_N "checking for libsoup-2.2... $ECHO_C" >&6
- if $PKG_CONFIG --exists "soup-2.0" ; then
+ if $PKG_CONFIG --exists "libsoup-2.2" ; then
echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6
succeeded=yes
echo "$as_me:$LINENO: checking SOUP_CFLAGS" >&5
echo $ECHO_N "checking SOUP_CFLAGS... $ECHO_C" >&6
- SOUP_CFLAGS=`$PKG_CONFIG --cflags "soup-2.0"`
+ SOUP_CFLAGS=`$PKG_CONFIG --cflags "libsoup-2.2"`
echo "$as_me:$LINENO: result: $SOUP_CFLAGS" >&5
echo "${ECHO_T}$SOUP_CFLAGS" >&6
echo "$as_me:$LINENO: checking SOUP_LIBS" >&5
echo $ECHO_N "checking SOUP_LIBS... $ECHO_C" >&6
- SOUP_LIBS=`$PKG_CONFIG --libs "soup-2.0"`
+ SOUP_LIBS=`$PKG_CONFIG --libs "libsoup-2.2"`
echo "$as_me:$LINENO: result: $SOUP_LIBS" >&5
echo "${ECHO_T}$SOUP_LIBS" >&6
else
@@ -7659,7 +7387,7 @@ echo "${ECHO_T}$SOUP_LIBS" >&6
SOUP_LIBS=""
## If we have a custom action on failure, don't print errors, but
## do set a variable so people can do so.
- SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "soup-2.0"`
+ SOUP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libsoup-2.2"`
fi
@@ -7672,33 +7400,44 @@ echo "${ECHO_T}$SOUP_LIBS" >&6
fi
if test $succeeded = yes; then
- have_soup=yes
+ :
else
- { echo "$as_me:$LINENO: WARNING: unable to find the soup library: forcing --disable-gmail" >&5
-echo "$as_me: WARNING: unable to find the soup library: forcing --disable-gmail" >&2;}; enable_gmail=no; disable_gmail_reason="(libsoup not found)"
+ { echo "$as_me:$LINENO: libsoup not found: forcing --disable-gmail" >&5
+echo "$as_me: libsoup not found: forcing --disable-gmail" >&6;}
+enable_gmail=no
+disable_gmail_reason="(libsoup not found)"
fi
fi
-ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
-
-
-LIBBONOBO_IDL="`$PKG_CONFIG --variable=idldir libbonobo-2.0`"
-
+if test $enable_mime = yes &&
+ test $enable_mbox = no &&
+ test $enable_mh = no &&
+ test $enable_maildir = no &&
+ test $enable_pop3 = no &&
+ test $enable_imap = no &&
+ test $enable_sylpheed = no; then
+ { echo "$as_me:$LINENO: mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled: forcing --disable-mime" >&5
+echo "$as_me: mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled: forcing --disable-mime" >&6;}
+enable_mime=no
+disable_mime_reason="(mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled)"
+fi
-BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
+if test $enable_mime = yes; then
+ succeeded=no
-# Extract the first word of "gob2", so it can be a program name with args.
-set dummy gob2; ac_word=$2
+ if test -z "$PKG_CONFIG"; then
+ # Extract the first word of "pkg-config", so it can be a program name with args.
+set dummy pkg-config; ac_word=$2
echo "$as_me:$LINENO: checking for $ac_word" >&5
echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6
-if test "${ac_cv_path_GOB2+set}" = set; then
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- case $GOB2 in
+ case $PKG_CONFIG in
[\\/]* | ?:[\\/]*)
- ac_cv_path_GOB2="$GOB2" # Let the user override the test with a path.
+ ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path.
;;
*)
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
@@ -7708,26 +7447,83 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_path_GOB2="$as_dir/$ac_word$ac_exec_ext"
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
+ test -z "$ac_cv_path_PKG_CONFIG" && ac_cv_path_PKG_CONFIG="no"
;;
esac
fi
-GOB2=$ac_cv_path_GOB2
+PKG_CONFIG=$ac_cv_path_PKG_CONFIG
-if test -n "$GOB2"; then
- echo "$as_me:$LINENO: result: $GOB2" >&5
-echo "${ECHO_T}$GOB2" >&6
+if test -n "$PKG_CONFIG"; then
+ echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6
else
echo "$as_me:$LINENO: result: no" >&5
echo "${ECHO_T}no" >&6
fi
+ fi
+
+ if test "$PKG_CONFIG" = "no" ; then
+ echo "*** The pkg-config script could not be found. Make sure it is"
+ echo "*** in your path, or set the PKG_CONFIG environment variable"
+ echo "*** to the full path to pkg-config."
+ echo "*** Or see http://www.freedesktop.org/software/pkgconfig to get pkg-config."
+ else
+ PKG_CONFIG_MIN_VERSION=0.9.0
+ if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
+ echo "$as_me:$LINENO: checking for gmime-2.0" >&5
+echo $ECHO_N "checking for gmime-2.0... $ECHO_C" >&6
+
+ if $PKG_CONFIG --exists "gmime-2.0" ; then
+ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6
+ succeeded=yes
+
+ echo "$as_me:$LINENO: checking GMIME_CFLAGS" >&5
+echo $ECHO_N "checking GMIME_CFLAGS... $ECHO_C" >&6
+ GMIME_CFLAGS=`$PKG_CONFIG --cflags "gmime-2.0"`
+ echo "$as_me:$LINENO: result: $GMIME_CFLAGS" >&5
+echo "${ECHO_T}$GMIME_CFLAGS" >&6
+
+ echo "$as_me:$LINENO: checking GMIME_LIBS" >&5
+echo $ECHO_N "checking GMIME_LIBS... $ECHO_C" >&6
+ GMIME_LIBS=`$PKG_CONFIG --libs "gmime-2.0"`
+ echo "$as_me:$LINENO: result: $GMIME_LIBS" >&5
+echo "${ECHO_T}$GMIME_LIBS" >&6
+ else
+ GMIME_CFLAGS=""
+ GMIME_LIBS=""
+ ## If we have a custom action on failure, don't print errors, but
+ ## do set a variable so people can do so.
+ GMIME_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "gmime-2.0"`
+
+ fi
+
+
+
+ else
+ echo "*** Your version of pkg-config is too old. You need version $PKG_CONFIG_MIN_VERSION or newer."
+ echo "*** See http://www.freedesktop.org/software/pkgconfig"
+ fi
+ fi
+
+ if test $succeeded = yes; then
+ :
+ else
+ { echo "$as_me:$LINENO: GMime not found: forcing --disable-mime" >&5
+echo "$as_me: GMime not found: forcing --disable-mime" >&6;}
+enable_mime=no
+disable_mime_reason="(GMime not found)"
+ fi
+
+fi
### Automake conditionals
@@ -7833,12 +7629,12 @@ fi
-if test $have_soup = yes; then
- HAVE_SOUP_TRUE=
- HAVE_SOUP_FALSE='#'
+if test $enable_mime = yes; then
+ WITH_MIME_TRUE=
+ WITH_MIME_FALSE='#'
else
- HAVE_SOUP_TRUE='#'
- HAVE_SOUP_FALSE=
+ WITH_MIME_TRUE='#'
+ WITH_MIME_FALSE=
fi
@@ -7924,6 +7720,14 @@ cat >>confdefs.h <<\_ACEOF
_ACEOF
fi
+if test $enable_mime = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define WITH_MIME 1
+_ACEOF
+
+fi
+
### output
@@ -8132,10 +7936,10 @@ echo "$as_me: error: conditional \"WITH_GMAIL\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
-if test -z "${HAVE_SOUP_TRUE}" && test -z "${HAVE_SOUP_FALSE}"; then
- { { echo "$as_me:$LINENO: error: conditional \"HAVE_SOUP\" was never defined.
+if test -z "${WITH_MIME_TRUE}" && test -z "${WITH_MIME_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"WITH_MIME\" was never defined.
Usually this means the macro was only invoked conditionally." >&5
-echo "$as_me: error: conditional \"HAVE_SOUP\" was never defined.
+echo "$as_me: error: conditional \"WITH_MIME\" was never defined.
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
@@ -8417,7 +8221,7 @@ _ASBOX
} >&5
cat >&5 <<_CSEOF
-This file was extended by mail-notification $as_me 0.6.2, which was
+This file was extended by mail-notification $as_me 0.7.0, which was
generated by GNU Autoconf 2.59. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8480,7 +8284,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-mail-notification config.status 0.6.2
+mail-notification config.status 0.7.0
configured by $0, generated by GNU Autoconf 2.59,
with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\"
@@ -8691,7 +8495,6 @@ s,@ECHO_C@,$ECHO_C,;t t
s,@ECHO_N@,$ECHO_N,;t t
s,@ECHO_T@,$ECHO_T,;t t
s,@LIBS@,$LIBS,;t t
-s,@G_ASSERTIONS@,$G_ASSERTIONS,;t t
s,@WARN_CFLAGS@,$WARN_CFLAGS,;t t
s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t
s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t
@@ -8780,16 +8583,18 @@ s,@GCONF_SCHEMA_FILE_DIR@,$GCONF_SCHEMA_FILE_DIR,;t t
s,@GCONF_SCHEMAS_INSTALL_TRUE@,$GCONF_SCHEMAS_INSTALL_TRUE,;t t
s,@GCONF_SCHEMAS_INSTALL_FALSE@,$GCONF_SCHEMAS_INSTALL_FALSE,;t t
s,@GCONFTOOL@,$GCONFTOOL,;t t
+s,@ORBIT_IDL@,$ORBIT_IDL,;t t
+s,@LIBBONOBO_IDL@,$LIBBONOBO_IDL,;t t
+s,@BONOBO_ACTIVATION_IDL@,$BONOBO_ACTIVATION_IDL,;t t
+s,@GOB2@,$GOB2,;t t
s,@OPENSSL_CFLAGS@,$OPENSSL_CFLAGS,;t t
s,@OPENSSL_LIBS@,$OPENSSL_LIBS,;t t
s,@SASL_CFLAGS@,$SASL_CFLAGS,;t t
s,@SASL_LIBS@,$SASL_LIBS,;t t
s,@SOUP_CFLAGS@,$SOUP_CFLAGS,;t t
s,@SOUP_LIBS@,$SOUP_LIBS,;t t
-s,@ORBIT_IDL@,$ORBIT_IDL,;t t
-s,@LIBBONOBO_IDL@,$LIBBONOBO_IDL,;t t
-s,@BONOBO_ACTIVATION_IDL@,$BONOBO_ACTIVATION_IDL,;t t
-s,@GOB2@,$GOB2,;t t
+s,@GMIME_CFLAGS@,$GMIME_CFLAGS,;t t
+s,@GMIME_LIBS@,$GMIME_LIBS,;t t
s,@WITH_MBOX_TRUE@,$WITH_MBOX_TRUE,;t t
s,@WITH_MBOX_FALSE@,$WITH_MBOX_FALSE,;t t
s,@WITH_MH_TRUE@,$WITH_MH_TRUE,;t t
@@ -8810,8 +8615,8 @@ s,@WITH_SYLPHEED_TRUE@,$WITH_SYLPHEED_TRUE,;t t
s,@WITH_SYLPHEED_FALSE@,$WITH_SYLPHEED_FALSE,;t t
s,@WITH_GMAIL_TRUE@,$WITH_GMAIL_TRUE,;t t
s,@WITH_GMAIL_FALSE@,$WITH_GMAIL_FALSE,;t t
-s,@HAVE_SOUP_TRUE@,$HAVE_SOUP_TRUE,;t t
-s,@HAVE_SOUP_FALSE@,$HAVE_SOUP_FALSE,;t t
+s,@WITH_MIME_TRUE@,$WITH_MIME_TRUE,;t t
+s,@WITH_MIME_FALSE@,$WITH_MIME_FALSE,;t t
s,@WITH_REGRESSION_TESTS_TRUE@,$WITH_REGRESSION_TESTS_TRUE,;t t
s,@WITH_REGRESSION_TESTS_FALSE@,$WITH_REGRESSION_TESTS_FALSE,;t t
s,@LIBOBJS@,$LIBOBJS,;t t
@@ -9580,23 +9385,27 @@ $PACKAGE $VERSION is ready to be built.
The following settings will be used:
Installation prefixes
- --prefix $prefix
- --exec-prefix $exec_prefix
+ --prefix $prefix
+ --exec-prefix $exec_prefix
Installation directories
- --bindir $bindir
- --datadir $datadir
- --sysconfdir $sysconfdir
+ --bindir $bindir
+ --datadir $datadir
+ --sysconfdir $sysconfdir
+ --libdir $libdir
Features
- --enable-mbox $enable_mbox
- --enable-mh $enable_mh
- --enable-maildir $enable_maildir
- --enable-pop3 $enable_pop3 $disable_pop3_reason
- --enable-imap $enable_imap $disable_imap_reason
- --enable-ssl $enable_ssl $disable_ssl_reason
- --enable-sasl $enable_sasl $disable_sasl_reason
- --enable-sylpheed $enable_sylpheed
- --enable-gmail $enable_gmail $disable_gmail_reason
- --enable-ipv6 $enable_ipv6
+ --enable-mbox $enable_mbox $disable_mbox_reason
+ --enable-mh $enable_mh $disable_mh_reason
+ --enable-maildir $enable_maildir $disable_maildir_reason
+ --enable-pop3 $enable_pop3 $disable_pop3_reason
+ --enable-imap $enable_imap $disable_imap_reason
+ --enable-ssl $enable_ssl $disable_ssl_reason
+ --enable-sasl $enable_sasl $disable_sasl_reason
+ --enable-sylpheed $enable_sylpheed $disable_sylpheed_reason
+ --enable-gmail $enable_gmail $disable_gmail_reason
+ --enable-ipv6 $enable_ipv6 $disable_ipv6_reason
+ --enable-mime $enable_mime $disable_mime_reason
+
+Type "make" to build $PACKAGE $VERSION.
EOF
diff --git a/configure.ac b/configure.ac
@@ -1,89 +1,24 @@
-AC_INIT(mail-notification, 0.6.2, jylefort@brutele.be)
+AC_INIT(mail-notification, 0.7.0, jylefort@brutele.be)
AC_CONFIG_SRCDIR(src/mn-main.c)
AC_PREREQ(2.59)
### command line arguments
-AC_ARG_ENABLE(mbox,
-AC_HELP_STRING([--disable-mbox], [disable mbox support]),
-[case "$enableval" in
- yes|no) enable_mbox=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-mbox]) ;;
-esac], [enable_mbox=yes])
-
-AC_ARG_ENABLE(mh,
-AC_HELP_STRING([--disable-mh], [disable MH support]),
-[case "$enableval" in
- yes|no) enable_mh=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-mh]) ;;
-esac], [enable_mh=yes])
-
-AC_ARG_ENABLE(maildir,
-AC_HELP_STRING([--disable-maildir], [disable Maildir support]),
-[case "$enableval" in
- yes|no) enable_maildir=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-maildir]) ;;
-esac], [enable_maildir=yes])
-
-AC_ARG_ENABLE(pop3,
-AC_HELP_STRING([--disable-pop3], [disable POP3 support]),
-[case "$enableval" in
- yes|no) enable_pop3=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-pop3]) ;;
-esac], [enable_pop3=yes])
-
-AC_ARG_ENABLE(imap,
-AC_HELP_STRING([--disable-imap], [disable IMAP support]),
-[case "$enableval" in
- yes|no) enable_imap=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-imap]) ;;
-esac], [enable_imap=yes])
-
-AC_ARG_ENABLE(ssl,
-AC_HELP_STRING([--disable-ssl], [disable SSL/TLS support]),
-[case "$enableval" in
- yes|no) enable_ssl=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-ssl]) ;;
-esac], [enable_ssl=yes])
-
-AC_ARG_ENABLE(sasl,
-AC_HELP_STRING([--disable-sasl], [disable SASL authentication support]),
-[case "$enableval" in
- yes|no) enable_sasl=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-sasl]) ;;
-esac], [enable_sasl=yes])
-
-AC_ARG_ENABLE(sylpheed,
-AC_HELP_STRING([--disable-sylpheed], [disable Sylpheed support]),
-[case "$enableval" in
- yes|no) enable_sylpheed=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-sylpheed]) ;;
-esac], [enable_sylpheed=yes])
-
-AC_ARG_ENABLE(gmail,
-AC_HELP_STRING([--disable-gmail], [disable Gmail support]),
-[case "$enableval" in
- yes|no) enable_gmail=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-gmail]) ;;
-esac], [enable_gmail=yes])
-
-AC_ARG_ENABLE(ipv6,
-AC_HELP_STRING([--disable-ipv6], [disable IPv6 support]),
-[case "$enableval" in
- yes|no) enable_ipv6=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-ipv6]) ;;
-esac], [enable_ipv6=yes])
-
-AC_ARG_G_ASSERTIONS
-AC_ARG_COMPILE_WARNINGS
-
-AC_ARG_ENABLE(regression-tests,
-AC_HELP_STRING([--enable-regression-tests], [build and run regression tests [[no]]]),
-[case "$enableval" in
- yes|no) enable_regression_tests=$enableval ;;
- *) AC_MSG_ERROR([bad value $enableval for --enable-regression-tests]) ;;
-esac], [enable_regression_tests=no])
+MN_ARG_ENABLE(mbox, [disable mbox support])
+MN_ARG_ENABLE(mh, [disable MH support])
+MN_ARG_ENABLE(maildir, [disable Maildir support])
+MN_ARG_ENABLE(pop3, [disable POP3 support])
+MN_ARG_ENABLE(imap, [disable IMAP support])
+MN_ARG_ENABLE(ssl, [disable SSL/TLS support])
+MN_ARG_ENABLE(sasl, [disable SASL authentication support])
+MN_ARG_ENABLE(sylpheed, [disable Sylpheed support])
+MN_ARG_ENABLE(gmail, [disable Gmail support])
+MN_ARG_ENABLE(ipv6, [disable IPv6 support])
+MN_ARG_ENABLE(mime, [disable MIME support])
+
+MN_ARG_COMPILE_WARNINGS
+MN_ARG_ENABLE(regression-tests, [build and run regression tests], no)
### initialization
@@ -97,7 +32,7 @@ GETTEXT_PACKAGE=AC_PACKAGE_NAME
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [Define to the gettext package name])
AC_SUBST(GETTEXT_PACKAGE)
-ALL_LINGUAS="de fr pt ru"
+ALL_LINGUAS="bg de fr pt ru sr sr@Latn"
AM_GLIB_GNU_GETTEXT
AC_PROG_INTLTOOL
@@ -107,41 +42,20 @@ AC_PROG_INTLTOOL
AC_PROG_CC
AC_SYS_LARGEFILE
-# the order of these tests matters
-AC_CHECK_HEADERS(errno.h signal.h stdarg.h stdio.h stdlib.h string.h sys/types.h unistd.h,, [AC_MSG_ERROR([header not found])])
-AC_CHECK_HEADER(sys/uio.h,, [AC_MSG_ERROR([header not found])],
-[#include <sys/types.h>])
-AC_CHECK_HEADER(sys/socket.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>])
-AC_CHECK_HEADER(netdb.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>])
-AC_CHECK_HEADER(netinet/in.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>])
-AC_CHECK_HEADER(arpa/inet.h,, [AC_MSG_ERROR([header not found])],
-[#include <stdio.h>
-#include <stdlib.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <netinet/in.h>])
-
-AC_CHECK_FUNCS(atoi close connect exit freeaddrinfo gai_strerror getaddrinfo getnameinfo getpeername getsockname memcpy memset read signal sleep socket sscanf strchr strcmp strlen strncmp strstr write,, [AC_MSG_ERROR([library function not found])])
-
-### build dependencies
+# check for ANSI C headers
+AC_HEADER_STDC
+if test $ac_cv_header_stdc != yes; then
+ AC_MSG_ERROR([ANSI C headers not present])
+fi
+
+# timegm() is non-standard, define HAVE_TIMEGM if it is present
+AC_CHECK_FUNCS(timegm)
+
+### mandatory libraries and programs
AM_PATH_GTK_2_0(2.4.0,, [AC_MSG_ERROR([unable to find the GTK+ library])])
PKG_CHECK_MODULES(GNOME, [gthread-2.0 gconf-2.0 >= 2.4.0 libgnomeui-2.0 gnome-vfs-2.0 libglade-2.0 eel-2.0 >= 2.6.0 bonobo-activation-2.0],, [AC_MSG_ERROR([unable to find the GNOME libraries])])
-AC_SUBST(GNOME_CFLAGS)
-AC_SUBST(GNOME_LIBS)
-
AM_GCONF_SOURCE_2
AC_PATH_PROG(GCONFTOOL, gconftool-2)
@@ -149,32 +63,6 @@ if test -z "$GCONFTOOL"; then
AC_MSG_ERROR([unable to find the gconftool-2 program])
fi
-if test $enable_pop3 = no && test $enable_imap = no; then
- if test $enable_ssl = yes; then
- AC_MSG_NOTICE([POP3 and IMAP support disabled: forcing --disable-ssl])
- enable_ssl=no
- disable_ssl_reason="(not needed)"
- fi
- if test $enable_sasl = yes; then
- AC_MSG_NOTICE([POP3 and IMAP support disabled: forcing --disable-sasl])
- enable_sasl=no
- disable_sasl_reason="(not needed)"
- fi
-fi
-
-if test $enable_ssl = yes; then
- AM_PATH_OPENSSL(,, [AC_MSG_WARN([unable to find the OpenSSL library: forcing --disable-ssl]); enable_ssl=no; disable_ssl_reason="(OpenSSL not found)"])
-fi
-
-if test $enable_sasl = yes; then
- AM_PATH_SASL2(,, [AC_MSG_WARN([unable to find the Cyrus SASL library: forcing --disable-sasl]); enable_sasl=no; disable_sasl_reason="(Cyrus SASL not found)"])
-fi
-
-have_soup=no
-if test $enable_gmail = yes; then
- PKG_CHECK_MODULES(SOUP, soup-2.0, have_soup=yes, [AC_MSG_WARN([unable to find the soup library: forcing --disable-gmail]); enable_gmail=no; disable_gmail_reason="(libsoup not found)"])
-fi
-
ORBIT_IDL="`$PKG_CONFIG --variable=orbit_idl ORBit-2.0`"
AC_SUBST(ORBIT_IDL)
@@ -184,56 +72,67 @@ AC_SUBST(LIBBONOBO_IDL)
BONOBO_ACTIVATION_IDL="`$PKG_CONFIG --variable=idldir bonobo-activation-2.0`"
AC_SUBST(BONOBO_ACTIVATION_IDL)
-AC_PATH_PROG(GOB2, gob2)
-
-### Automake conditionals
-
-AM_CONDITIONAL(WITH_MBOX, [test $enable_mbox = yes])
-AM_CONDITIONAL(WITH_MH, [test $enable_mh = yes])
-AM_CONDITIONAL(WITH_MAILDIR, [test $enable_maildir = yes])
-AM_CONDITIONAL(WITH_POP3, [test $enable_pop3 = yes])
-AM_CONDITIONAL(WITH_IMAP, [test $enable_imap = yes])
-AM_CONDITIONAL(WITH_POP3_OR_IMAP, [test $enable_pop3 = yes || test $enable_imap = yes])
-AM_CONDITIONAL(WITH_SSL, [test $enable_ssl = yes])
-AM_CONDITIONAL(WITH_SASL, [test $enable_sasl = yes])
-AM_CONDITIONAL(WITH_SYLPHEED, [test $enable_sylpheed = yes])
-AM_CONDITIONAL(WITH_GMAIL, [test $enable_gmail = yes])
-AM_CONDITIONAL(HAVE_SOUP, [test $have_soup = yes])
-AM_CONDITIONAL(WITH_REGRESSION_TESTS, [test $enable_regression_tests = yes])
+### optional libraries
-### config.h definitions
+# not needed by end-users, as files generated by GOB are distributed
+AC_PATH_PROG(GOB2, gob2)
-if test $enable_mbox = yes; then
- AC_DEFINE(WITH_MBOX, 1, [Define to 1 if mbox support is enabled])
-fi
-if test $enable_mh = yes; then
- AC_DEFINE(WITH_MH, 1, [Define to 1 if MH support is enabled])
-fi
-if test $enable_maildir = yes; then
- AC_DEFINE(WITH_MAILDIR, 1, [Define to 1 if Maildir support is enabled])
-fi
-if test $enable_pop3 = yes; then
- AC_DEFINE(WITH_POP3, 1, [Define to 1 if POP3 support is enabled])
-fi
-if test $enable_imap = yes; then
- AC_DEFINE(WITH_IMAP, 1, [Define to 1 if IMAP support is enabled])
-fi
-if test $enable_ssl = yes; then
- AC_DEFINE(WITH_SSL, 1, [Define to 1 if SSL/TLS support is enabled])
+if MN_FEATURE_DISABLED(pop3) && MN_FEATURE_DISABLED(imap); then
+ if MN_FEATURE_ENABLED(ssl); then
+ MN_FEATURE_DISABLE(ssl, [POP3 and IMAP support disabled])
+ fi
+ if MN_FEATURE_ENABLED(sasl); then
+ MN_FEATURE_DISABLE(sasl, [POP3 and IMAP support disabled])
+ fi
+ if MN_FEATURE_ENABLED(ipv6); then
+ MN_FEATURE_DISABLE(ipv6, [POP3 and IMAP support disabled])
+ fi
fi
-if test $enable_sasl = yes; then
- AC_DEFINE(WITH_SASL, 1, [Define to 1 if SASL support is enabled])
+
+if MN_FEATURE_ENABLED(ssl); then
+ AM_PATH_OPENSSL(,, [MN_FEATURE_DISABLE(ssl, [OpenSSL not found])])
fi
-if test $enable_sylpheed = yes; then
- AC_DEFINE(WITH_SYLPHEED, 1, [Define to 1 if Sylpheed support is enabled])
+if MN_FEATURE_ENABLED(sasl); then
+ AM_PATH_SASL2(,, [MN_FEATURE_DISABLE(sasl, [Cyrus SASL not found])])
fi
-if test $enable_gmail = yes; then
- AC_DEFINE(WITH_GMAIL, 1, [Define to 1 if Gmail support is enabled])
+
+if MN_FEATURE_ENABLED(gmail); then
+ PKG_CHECK_MODULES(SOUP, libsoup-2.2,, [MN_FEATURE_DISABLE(gmail, [libsoup not found])])
+fi
+
+if MN_FEATURE_ENABLED(mime) &&
+ MN_FEATURE_DISABLED(mbox) &&
+ MN_FEATURE_DISABLED(mh) &&
+ MN_FEATURE_DISABLED(maildir) &&
+ MN_FEATURE_DISABLED(pop3) &&
+ MN_FEATURE_DISABLED(imap) &&
+ MN_FEATURE_DISABLED(sylpheed); then
+ MN_FEATURE_DISABLE(mime, [mbox, MH, Maildir, POP3, IMAP and Sylpheed support disabled])
fi
-if test $enable_ipv6 = yes; then
- AC_DEFINE(WITH_IPV6, 1, [Define to 1 if IPv6 support is enabled])
+
+if MN_FEATURE_ENABLED(mime); then
+ PKG_CHECK_MODULES(GMIME, [gmime-2.0],, [MN_FEATURE_DISABLE(mime, [GMime not found])])
fi
+### Automake conditionals
+
+AM_CONDITIONAL(WITH_MBOX, [MN_FEATURE_ENABLED(mbox)])
+AM_CONDITIONAL(WITH_MH, [MN_FEATURE_ENABLED(mh)])
+AM_CONDITIONAL(WITH_MAILDIR, [MN_FEATURE_ENABLED(maildir)])
+AM_CONDITIONAL(WITH_POP3, [MN_FEATURE_ENABLED(pop3)])
+AM_CONDITIONAL(WITH_IMAP, [MN_FEATURE_ENABLED(imap)])
+AM_CONDITIONAL(WITH_POP3_OR_IMAP, [MN_FEATURE_ENABLED(pop3) || MN_FEATURE_ENABLED(imap)])
+AM_CONDITIONAL(WITH_SSL, [MN_FEATURE_ENABLED(ssl)])
+AM_CONDITIONAL(WITH_SASL, [MN_FEATURE_ENABLED(sasl)])
+AM_CONDITIONAL(WITH_SYLPHEED, [MN_FEATURE_ENABLED(sylpheed)])
+AM_CONDITIONAL(WITH_GMAIL, [MN_FEATURE_ENABLED(gmail)])
+AM_CONDITIONAL(WITH_MIME, [MN_FEATURE_ENABLED(mime)])
+AM_CONDITIONAL(WITH_REGRESSION_TESTS, [MN_FEATURE_ENABLED(regression-tests)])
+
+### config.h definitions
+
+MN_FEATURES_DEFINE([mbox, mh, maildir, pop3, imap, ssl, sasl, sylpheed, gmail, ipv6, mime])
+
### output
AC_CONFIG_FILES(Makefile
@@ -256,23 +155,10 @@ $PACKAGE $VERSION is ready to be built.
The following settings will be used:
Installation prefixes
- --prefix $prefix
- --exec-prefix $exec_prefix
-
+MN_REPORT_ARGS([prefix, exec-prefix])
Installation directories
- --bindir $bindir
- --datadir $datadir
- --sysconfdir $sysconfdir
-
+MN_REPORT_ARGS([bindir, datadir, sysconfdir, libdir])
Features
- --enable-mbox $enable_mbox
- --enable-mh $enable_mh
- --enable-maildir $enable_maildir
- --enable-pop3 $enable_pop3 $disable_pop3_reason
- --enable-imap $enable_imap $disable_imap_reason
- --enable-ssl $enable_ssl $disable_ssl_reason
- --enable-sasl $enable_sasl $disable_sasl_reason
- --enable-sylpheed $enable_sylpheed
- --enable-gmail $enable_gmail $disable_gmail_reason
- --enable-ipv6 $enable_ipv6
+MN_REPORT_FEATURES([mbox, mh, maildir, pop3, imap, ssl, sasl, sylpheed, gmail, ipv6, mime])
+Type "make" to build $PACKAGE $VERSION.
EOF
diff --git a/data/Makefile.am b/data/Makefile.am
@@ -10,7 +10,7 @@ serverdir = $(libdir)/bonobo/servers
server_in_files = GNOME_MailNotification_Automation.server.in
server_DATA = GNOME_MailNotification_Automation.server
-schemasdir = $(sysconfdir)/gconf/schemas
+schemasdir = $(GCONF_SCHEMA_FILE_DIR)
schemas_in_files = mail-notification.schemas.in
schemas_DATA = mail-notification.schemas
diff --git a/data/Makefile.in b/data/Makefile.in
@@ -87,6 +87,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -94,9 +96,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -170,6 +169,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -219,7 +220,7 @@ settings_DATA = mail-notification-properties.desktop
serverdir = $(libdir)/bonobo/servers
server_in_files = GNOME_MailNotification_Automation.server.in
server_DATA = GNOME_MailNotification_Automation.server
-schemasdir = $(sysconfdir)/gconf/schemas
+schemasdir = $(GCONF_SCHEMA_FILE_DIR)
schemas_in_files = mail-notification.schemas.in
schemas_DATA = mail-notification.schemas
soundlistdir = $(sysconfdir)/sound/events
diff --git a/data/mail-notification.schemas.in b/data/mail-notification.schemas.in
@@ -44,34 +44,13 @@
</locale>
</schema>
<schema>
- <key>/schemas/apps/mail-notification/commands/double-clicked/enabled</key>
- <applyto>/apps/mail-notification/commands/double-clicked/enabled</applyto>
- <owner>mail-notification</owner>
- <type>bool</type>
- <default>0</default>
- <locale name="C">
- <short>Run a command when the icon is double-clicked</short>
- <long>Whether to run a command when the icon is double-clicked or not.</long>
- </locale>
- </schema>
- <schema>
- <key>/schemas/apps/mail-notification/commands/double-clicked/command</key>
- <applyto>/apps/mail-notification/commands/double-clicked/command</applyto>
- <owner>mail-notification</owner>
- <type>string</type>
- <locale name="C">
- <short>Double-clicked command</short>
- <long>The command to run when the icon is double-clicked.</long>
- </locale>
- </schema>
- <schema>
<key>/schemas/apps/mail-notification/mailboxes</key>
<applyto>/apps/mail-notification/mailboxes</applyto>
<owner>mail-notification</owner>
<type>list</type>
<list_type>string</list_type>
<locale name="C">
- <short>Mailboxes list</short>
+ <short>Mailbox list</short>
<long>The list of mailboxes to monitor.</long>
</locale>
</schema>
@@ -80,7 +59,7 @@
<applyto>/apps/mail-notification/ui/properties-dialog/height</applyto>
<owner>mail-notification</owner>
<type>int</type>
- <default>420</default>
+ <default>366</default>
<locale name="C">
<short>Height of properties dialog</short>
<long>The height of the properties dialog in pixels.</long>
@@ -98,6 +77,39 @@
</locale>
</schema>
<schema>
+ <key>/schemas/apps/mail-notification/ui/summary-dialog/height</key>
+ <applyto>/apps/mail-notification/ui/summary-dialog/height</applyto>
+ <owner>mail-notification</owner>
+ <type>int</type>
+ <default>-1</default>
+ <locale name="C">
+ <short>Height of mail summary dialog</short>
+ <long>The height of the mail summary dialog in pixels.</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/ui/summary-dialog/width</key>
+ <applyto>/apps/mail-notification/ui/summary-dialog/width</applyto>
+ <owner>mail-notification</owner>
+ <type>int</type>
+ <default>-1</default>
+ <locale name="C">
+ <short>Width of mail summary dialog</short>
+ <long>The width of the mail summary dialog in pixels.</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/ui/immediate-notification-error-dialog/do-not-show</key>
+ <applyto>/apps/mail-notification/ui/immediate-notification-error-dialog/do-not-show</applyto>
+ <owner>mail-notification</owner>
+ <type>bool</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Do not show the immediate notification error dialog</short>
+ <long>Whether to prevent the immediate notification error dialog from being displayed or not.</long>
+ </locale>
+ </schema>
+ <schema>
<key>/schemas/apps/mail-notification/already-run</key>
<applyto>/apps/mail-notification/already-run</applyto>
<owner>mail-notification</owner>
@@ -141,5 +153,82 @@
<long>The list of trusted SSL/TLS servers (hostname:port) lacking a X509 certificate.</long>
</locale>
</schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/enable</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/enable</applyto>
+ <owner>mail-notification</owner>
+ <type>bool</type>
+ <default>1</default>
+ <locale name="C">
+ <short>Enable mail summary popup</short>
+ <long>Whether to display the mail summary popup when new mail arrives or not.</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/autoclose</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/autoclose</applyto>
+ <owner>mail-notification</owner>
+ <type>bool</type>
+ <default>1</default>
+ <locale name="C">
+ <short>Automatically close the mail summary popup</short>
+ <long>Whether to automatically close the mail summary popup or not.</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/autoclose-delay/minutes</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/autoclose-delay/minutes</applyto>
+ <owner>mail-notification</owner>
+ <type>int</type>
+ <default>0</default>
+ <locale name="C">
+ <short>Minutes to wait before closing the mail summary popup</short>
+ <long>The amount of time to wait before closing the mail summary popup (minutes part).</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/autoclose-delay/seconds</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/autoclose-delay/seconds</applyto>
+ <owner>mail-notification</owner>
+ <type>int</type>
+ <default>10</default>
+ <locale name="C">
+ <short>Seconds to wait before closing the mail summary popup</short>
+ <long>The amount of time to wait before closing the mail summary popup (seconds part).</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/position</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/position</applyto>
+ <owner>mail-notification</owner>
+ <type>string</type>
+ <default>top-left</default>
+ <locale name="C">
+ <short>Mail summary popup position</short>
+ <long>The position of the mail summary popup. Must be "top-left", "top-right", "bottom-left" or "bottom-right".</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/offset/horizontal</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/offset/horizontal</applyto>
+ <owner>mail-notification</owner>
+ <type>int</type>
+ <default>8</default>
+ <locale name="C">
+ <short>Mail summary popup horizontal offset</short>
+ <long>The number of pixels to leave between the left or right side of the screen and the mail summary popup.</long>
+ </locale>
+ </schema>
+ <schema>
+ <key>/schemas/apps/mail-notification/mail-summary-popup/offset/vertical</key>
+ <applyto>/apps/mail-notification/mail-summary-popup/offset/vertical</applyto>
+ <owner>mail-notification</owner>
+ <type>int</type>
+ <default>32</default>
+ <locale name="C">
+ <short>Mail summary popup vertical offset</short>
+ <long>The number of pixels to leave between the top or bottom side of the screen and the mail summary popup.</long>
+ </locale>
+ </schema>
</schemalist>
</gconfschemafile>
diff --git a/help/C/Makefile.in b/help/C/Makefile.in
@@ -141,6 +141,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -148,9 +150,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -224,6 +223,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -273,7 +274,7 @@ entities = documentation-license.xml software-license.xml
# ************* Begin of section some packagers may need to modify **************
# This variable (docdir) specifies where the documents should be installed.
# This default value should work for most packages.
-docdir = $(datadir)/help/$(docname)/$(lang)
+docdir = $(datadir)/gnome/help/$(docname)/$(lang)
# ************** You should not have to edit below this line *******************
xml_files = $(entities) $(docname).xml
diff --git a/help/C/mail-notification-C.omf b/help/C/mail-notification-C.omf
@@ -12,9 +12,9 @@
Mail Notification Manual
</title>
<date>
- 2004-09-09
+ 2004-10-06
</date>
- <version identifier="2.4" date="2004-09-09" description="Fifth release"/>
+ <version identifier="2.5" date="2004-10-06" description="Sixth release"/>
<subject category="GNOME|Internet"/>
<description>
Mail Notification Manual
diff --git a/help/C/mail-notification.xml b/help/C/mail-notification.xml
@@ -2,9 +2,9 @@
<!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
<!ENTITY app "<application>Mail Notification</application>">
- <!ENTITY appversion "0.6.2">
- <!ENTITY manrevision "2.4">
- <!ENTITY date "Thursday, September 9, 2004">
+ <!ENTITY appversion "0.7.0">
+ <!ENTITY manrevision "2.5">
+ <!ENTITY date "Wednesday, October 6, 2004">
<!ENTITY project "The Mail Notification Project">
@@ -26,7 +26,7 @@
<!ENTITY gnomevfs "<link linkend="gnomevfs">GnomeVFS</link>">
]>
-<!-- $Id: mail-notification.xml,v 1.49 2004/09/08 23:26:57 jylefort Exp $ -->
+<!-- $Id: mail-notification.xml,v 1.56 2004/10/06 17:25:39 jylefort Exp $ -->
<!-- Mail Notification Manual -->
<!-- Copyright (c) 2004 Jean-Yves Lefort -->
@@ -134,6 +134,17 @@
</revdescription>
</revision>
<revision>
+ <revnumber>Mail Notification Manual V2.4</revnumber>
+ <date>Thursday, September 9, 2004</date>
+ <revdescription>
+ <para role="author">
+ Jean-Yves Lefort
+ <email>jylefort@brutele.be</email>
+ </para>
+ <para role="publisher">&project;</para>
+ </revdescription>
+ </revision>
+ <revision>
<revnumber>Mail Notification Manual V2.3</revnumber>
<date>Thursday, August 19, 2004</date>
<revdescription>
@@ -218,6 +229,7 @@
<listitem><para>&ssl;/&tls; support</para></listitem>
<listitem><para>automatic detection of mailbox format</para></listitem>
<listitem><para><link linkend="immediate-notification">immediate notification</link> (the status icon is updated within seconds after a mailbox changes)</para></listitem>
+ <listitem><para>a mail summary</para></listitem>
<listitem><para><ulink url="http://developer.gnome.org/projects/gup/hig" type="http">HIG</ulink> 2.0 compliance</para></listitem>
</itemizedlist>
</sect1>
@@ -228,8 +240,7 @@
<sect2 id="to-start">
<title>To Start &app;</title>
<para>
- You can start <application>&app;</application> in the
- following ways:
+ You can start &app; in the following ways:
</para>
<variablelist>
<varlistentry>
@@ -247,9 +258,8 @@
<term>Command line</term>
<listitem>
<para>
- To start <application>&app;</application> from a command
- line, type the following command, then press
- <keycap>Return</keycap>:
+ To start &app; from a command line, type the following
+ command, then press <keycap>Return</keycap>:
</para>
<para>
<command>mail-notification</command>
@@ -283,6 +293,11 @@
</varlistentry>
<varlistentry>
+ <term>--display-mail-summary</term>
+ <listitem><para>Display the mail summary dialog</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>--display-properties</term>
<listitem><para>Display the properties dialog</para></listitem>
</varlistentry>
@@ -293,6 +308,11 @@
</varlistentry>
<varlistentry>
+ <term>--close-popup</term>
+ <listitem><para>Close the mail summary popup</para></listitem>
+ </varlistentry>
+
+ <varlistentry>
<term>--update</term>
<listitem><para>Update the mail status</para></listitem>
</varlistentry>
@@ -320,8 +340,8 @@
<sect2 id="when-start">
<title>When You Start &app;</title>
<para>
- When you start <application>&app;</application>, it stays in
- the background and monitors the status of your mailboxes.
+ When you start &app;, it stays in the background and monitors
+ the status of your mailboxes.
</para>
<para>
When new mail arrives, an icon similar to the following one is
@@ -341,12 +361,18 @@
</screenshot>
</figure>
<para>
+ Additionally, if the <link linkend="enable-mail-summary-popup">Enable mail summary popup</link>
+ setting is enabled, an overview of new and unread messages is
+ displayed.
+ </para>
+ <para>
If an error is detected, the icon blinks (unless the
<link linkend="blink-on-errors">Blink on errors</link> setting is disabled).
</para>
<para>
Leaving your mouse over the icon will reveal more details
- about the status of your mailboxes.
+ about the status of your mailboxes. Double-clicking on the
+ icon will display the <link linkend="mail-summary">Mail Summary</link> dialog.
</para>
</sect2>
</sect1>
@@ -368,99 +394,176 @@
</para>
<para>
The <guilabel>Properties</guilabel> dialog contains the
- following settings:
+ following tabbed sections:
</para>
+ <itemizedlist>
+ <listitem>
+ <para><link linkend="properties-general">General</link></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="properties-mailboxes">Mailboxes</link></para>
+ </listitem>
+ <listitem>
+ <para><link linkend="properties-mail-summary-popup">Mail Summary Popup</link></para>
+ </listitem>
+ </itemizedlist>
- <variablelist>
- <varlistentry>
- <term><guilabel>General</guilabel></term>
- <listitem>
- <variablelist>
- <varlistentry id="delay-between-mail-checks">
- <term><guilabel>Delay between mail checks</guilabel></term>
- <listitem>
- <para>
- This is the amount of time to wait between mail
- checks.
- <note>
- <para>
- This delay only applies to mailboxes which do
- not support <link linkend="immediate-notification">immediate notification</link> of changes.
- </para>
- </note>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><guilabel>Start Mail Notification on GNOME login</guilabel></term>
- <listitem>
- <para>
- If this option is enabled, &app; will be started
- along with your GNOME session.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry id="blink-on-errors">
- <term><guilabel>Blink on errors</guilabel></term>
- <listitem>
+ <sect2 id="properties-general">
+ <title>General</title>
+ <variablelist>
+ <varlistentry>
+ <term><guilabel>Start Mail Notification on GNOME login</guilabel></term>
+ <listitem>
+ <para>
+ If this option is enabled, &app; will be started along
+ with your GNOME session.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry id="blink-on-errors">
+ <term><guilabel>Blink on errors</guilabel></term>
+ <listitem>
+ <para>
+ If this option is enabled, &app; will show the status
+ icon and make it blink on errors. Disabling this option
+ is useful if some of your mailboxes are not permanently
+ accessible.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Run a command when new mail arrives:</guilabel></term>
+ <listitem>
+ <para>
+ This is the command to execute when new mail arrives.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
+
+ <sect2 id="properties-mailboxes">
+ <title>Mailboxes</title>
+ <variablelist>
+ <varlistentry>
+ <term><guilabel>General</guilabel></term>
+ <listitem>
+ <variablelist>
+ <varlistentry id="delay-between-mail-checks">
+ <term><guilabel>Delay between mail checks</guilabel></term>
+ <listitem>
+ <para>
+ This is the amount of time to wait between mail
+ checks.
+ <note>
+ <para>
+ This delay only applies to mailboxes which do
+ not support <link linkend="immediate-notification">immediate
+ notification</link> of changes.
+ </para>
+ </note>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Mailbox List</guilabel></term>
+ <listitem>
+ <para>
+ This is the list of mailboxes to monitor for new
+ mail. Selecting <guibutton>Add</guibutton> or
+ <guibutton>Properties</guibutton> will display the <link linkend="mailbox-properties">Mailbox Properties</link>
+ dialog.
+ <tip>
<para>
- If this option is enabled, &app; will show the
- status icon and make it blink on errors. Disabling
- this option is useful if some of your mailboxes are
- not permanently accessible.
+ You can drag a file or folder into this list.
</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><guilabel>Mailboxes</guilabel></term>
- <listitem>
- <para>
- This is the list of mailboxes to monitor for new mail.
- <tip>
- <para>
- You can drag a file or folder into this list.
- </para>
- </tip>
- </para>
- </listitem>
- </varlistentry>
+ </tip>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
- <varlistentry>
- <term><guilabel>Commands</guilabel></term>
- <listitem>
- <variablelist>
- <varlistentry>
- <term><guilabel>When new mail arrives:</guilabel></term>
- <listitem>
- <para>
- This is the command to execute when new mail
- arrives.
- <note>
- <para>
- This command will not be executed if you already
- have new mail.
- </para>
- </note>
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><guilabel>When double-clicked:</guilabel></term>
- <listitem>
- <para>
- This is the command to execute when the icon is
- double-clicked.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </listitem>
- </varlistentry>
- </variablelist>
+ <sect2 id="properties-mail-summary-popup">
+ <title>Mail Summary Popup</title>
+ <variablelist>
+ <varlistentry>
+ <term><guilabel>General</guilabel></term>
+ <listitem>
+ <variablelist>
+ <varlistentry id="enable-mail-summary-popup">
+ <term><guilabel>Enable mail summary popup</guilabel></term>
+ <listitem>
+ <para>
+ Whether to display the mail summary popup when new
+ mail arrives or not.
+ <note>
+ <para>
+ The mail summary popup will not be displayed if the <link linkend="mail-summary">Mail Summary</link>
+ dialog is displayed.
+ </para>
+ </note>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Automatically close after:</guilabel></term>
+ <listitem>
+ <para>
+ Whether to automatically close the mail summary
+ popup after a delay has elapsed or not.
+ <note>
+ <para>
+ The timer is restarted when new mail arrives.
+ </para>
+ </note>
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Position</guilabel></term>
+ <listitem>
+ <variablelist>
+ <varlistentry>
+ <term><guilabel>Position:</guilabel></term>
+ <listitem>
+ <para>
+ The location of the mail summary popup on the
+ screen.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Horizontal offset:</guilabel></term>
+ <listitem>
+ <para>
+ The number of pixels to leave between the left or
+ right side of the screen and the mail summary
+ popup.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><guilabel>Vertical offset:</guilabel></term>
+ <listitem>
+ <para>
+ The number of pixels to leave between the top or
+ bottom side of the screen and the mail summary
+ popup.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
</sect1>
<sect1 id="mailbox-properties">
@@ -664,6 +767,32 @@
</variablelist>
</sect1>
+ <sect1 id="mail-summary">
+ <title>Mail Summary</title>
+ <para>
+ The <guilabel>Mail Summary</guilabel> dialog can be accessed by
+ double-clicking on the mail icon, or by right-clicking on it and
+ choosing <menuchoice><guimenuitem>Mail Summary</guimenuitem></menuchoice>.
+ </para>
+ <para>
+ The <guilabel>Mail Summary</guilabel> dialog displays the list
+ of new and unread messages, sorted by sent date in descending
+ order.
+ </para>
+ <important>
+ <para>
+ To be able to extract messages from mbox, MH, Maildir, POP3,
+ IMAP and Sylpheed mailboxes, &app; must have been compiled
+ with MIME support.
+ </para>
+ <para>
+ &app; has been compiled with MIME support if
+ <command>mail-notification --list-features</command> lists the
+ MIME feature.
+ </para>
+ </important>
+ </sect1>
+
<sect1 id="troubleshooting">
<title>Troubleshooting</title>
<para>
@@ -812,7 +941,9 @@ endif</programlisting>
<listitem><para>Hendrik Brandt</para></listitem>
<listitem><para>Duarte Henriques</para></listitem>
<listitem><para>Dan Korostelev</para></listitem>
+ <listitem><para>Filip Miletic</para></listitem>
<listitem><para>Phil Nelson</para></listitem>
+ <listitem><para>Vladimir Petkov</para></listitem>
</itemizedlist>
</sect2>
diff --git a/help/Makefile.in b/help/Makefile.in
@@ -87,6 +87,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -94,9 +96,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -170,6 +169,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/help/xmldocs.make b/help/xmldocs.make
@@ -36,7 +36,7 @@
# ************* Begin of section some packagers may need to modify **************
# This variable (docdir) specifies where the documents should be installed.
# This default value should work for most packages.
-docdir = $(datadir)/help/$(docname)/$(lang)
+docdir = $(datadir)/gnome/help/$(docname)/$(lang)
# ************** You should not have to edit below this line *******************
xml_files = $(entities) $(docname).xml
diff --git a/m4/Makefile.in b/m4/Makefile.in
@@ -78,6 +78,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -85,9 +87,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -161,6 +160,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/po/POTFILES.in b/po/POTFILES.in
@@ -18,6 +18,7 @@ src/mn-conf.c
src/mn-conf.h
src/mn-gmail-mailbox-properties.gob
src/mn-gmail-mailbox.gob
+src/mn-gmime-stream-vfs.gob
src/mn-imap-mailbox-properties.gob
src/mn-imap-mailbox.gob
src/mn-mail-icon.gob
@@ -35,6 +36,10 @@ src/mn-main.c
src/mn-mbox-mailbox.gob
src/mn-md5.c
src/mn-md5.h
+src/mn-message-label.gob
+src/mn-message-mime.c
+src/mn-message-mime.h
+src/mn-message.gob
src/mn-mh-mailbox.gob
src/mn-pending-mailbox.gob
src/mn-pi-mailbox-properties.gob
@@ -44,6 +49,8 @@ src/mn-properties.c
src/mn-properties.h
src/mn-sasl.c
src/mn-sasl.h
+src/mn-sgml-ref.c
+src/mn-sgml-ref.h
src/mn-shell.gob
src/mn-soup.c
src/mn-soup.h
@@ -51,6 +58,12 @@ src/mn-ssl.c
src/mn-ssl.h
src/mn-stock.c
src/mn-stock.h
+src/mn-summary-dialog.c
+src/mn-summary-dialog.h
+src/mn-summary-popup.c
+src/mn-summary-popup.h
+src/mn-summary.c
+src/mn-summary.h
src/mn-sylpheed-mailbox.gob
src/mn-system-mailbox-properties.gob
src/mn-unsupported-mailbox.gob
@@ -61,4 +74,6 @@ src/mn-vfs.c
src/mn-vfs.h
ui/mailbox-properties.glade
ui/properties.glade
+ui/summary-dialog.glade
+ui/summary-popup.glade
ui/welcome.glade
diff --git a/po/bg.gmo b/po/bg.gmo
Binary files differ.
diff --git a/po/bg.po b/po/bg.po
@@ -0,0 +1,1508 @@
+# Bulgarian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Vladimir "Kaladan" Petkov <vpetkov@i-space.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: gnome in bulgarian 0.6.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-10-05 16:13+0200\n"
+"Last-Translator: Vladimir \"Kaladan\" Petkov <vpetkov@i-space.org>\n"
+"Language-Team: Bulgarian <bg@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Автоматизиране на известяването за поща"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Фабрика за автоматизирането на известяването за поща"
+
+#: data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+msgstr "Настройване на известяването за поща"
+
+#: data/mail-notification-properties.desktop.in.h:2
+#: data/mail-notification.desktop.in.h:2
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
+msgid "Mail Notification"
+msgstr "Известяване за поща"
+
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Ще бъдете известяван за пристигането на нова поща"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Мигане при грешки"
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Период между проверката за поща (минути)."
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Период между проверките за поща (секунди)."
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Пръстови отпечатъци на проверени X509 сертификати"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Has already been run"
+msgstr "Вече е стартиран"
+
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Височина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Height of properties dialog"
+msgstr "Височина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
+msgstr "Списък на пощенските кутии"
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr "Минути между проверките"
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Нова команда за поща"
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr "Стартиране на команда при пристигането на нова поща"
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr "Секунди между проверките за поща"
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr "Командата, която да се стартира при пристигането на нова поща."
+
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Височината в пиксели на диалоговия прозорец за настройките."
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr "Височината в пиксели на диалоговия прозорец за настройките."
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr "Списъкът на пощенските кутии за следене."
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:28
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr ""
+"Списъкът на проверените сертификати тип X509, представени от техните "
+"пръстови отпечатъци в MD5 формат."
+
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Ширината на диалоговия прозорец за настройките в пиксели."
+
+#: data/mail-notification.schemas.in.h:33
+msgid "The width of the properties dialog in pixels."
+msgstr "Ширината на диалоговия прозорец за настройките в пиксели."
+
+#: data/mail-notification.schemas.in.h:34
+msgid "Trusted servers list"
+msgstr "Списък на проверените сървъри"
+
+#: data/mail-notification.schemas.in.h:35
+msgid "Whether Mail Notification has already been run or not."
+msgstr "Дали известяването за поща вече е стартирано или не."
+
+#: data/mail-notification.schemas.in.h:36
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Дали иконата за състоянието да мига при грешки или не"
+
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Ширина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.schemas.in.h:42
+msgid "Width of properties dialog"
+msgstr "Ширина на диалоговия прозорец за настройките"
+
+#: data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Нова поща"
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr "Ориентация"
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr ""
+
+#: src/mn-about-dialog.gob:43
+msgid "A Mail Notification Icon"
+msgstr "Уведомяване за поща"
+
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Vladimir Petkov <vpetkov@i-space.org>"
+
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">автоматично засичане</span>"
+
+#: src/mn-autodetect-mailbox-properties.gob:68
+msgid "_Location:"
+msgstr "_Местоположение:"
+
+#: src/mn-autodetect-mailbox-properties.gob:74
+msgid "_Browse..."
+msgstr "_Разглеждане..."
+
+#: src/mn-autodetect-mailbox-properties.gob:81
+msgid "The URI of the mailbox"
+msgstr "Адресът на пощенската кутия"
+
+#: src/mn-autodetect-mailbox-properties.gob:118
+msgid "Select a File or Folder"
+msgstr "Избор на файл или папка"
+
+#: src/mn-blinking-image.gob:32
+msgid "Whether the image is blinking or not"
+msgstr "Дали изображението да мига или не"
+
+#: src/mn-client-session.c:229
+#, c-format
+msgid "resolving %s"
+msgstr "търсене на %s"
+
+#: src/mn-client-session.c:239
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "неуспех при намирането на %s: %s"
+
+#: src/mn-client-session.c:276
+#, c-format
+msgid "%s: unsupported address family"
+msgstr ""
+
+#: src/mn-client-session.c:283
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr ""
+
+#: src/mn-client-session.c:287
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "свързване с %s (%s) порт %i"
+
+#: src/mn-client-session.c:290
+#, c-format
+msgid "unable to connect: %s"
+msgstr "неуспех при свързването: %s"
+
+#: src/mn-client-session.c:295
+msgid "connected successfully"
+msgstr "успешно свързване"
+
+#. if reached, we couldn't find a working address
+#: src/mn-client-session.c:301
+#, c-format
+msgid "unable to connect to %s"
+msgstr "неуспех при свързването с %s"
+
+#: src/mn-client-session.c:317
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr ""
+
+#: src/mn-client-session.c:325
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr ""
+
+#: src/mn-client-session.c:331
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr ""
+
+#: src/mn-client-session.c:337
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr ""
+
+#: src/mn-client-session.c:343
+msgid "untrusted server"
+msgstr "непроверен сървър"
+
+#: src/mn-client-session.c:347
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr ""
+
+#: src/mn-client-session.c:394
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, пръстов отпечатък: %s"
+
+#: src/mn-client-session.c:423
+msgid "missing certificate"
+msgstr "липсващ сертификат"
+
+#: src/mn-client-session.c:449
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+
+#: src/mn-client-session.c:466
+msgid "Connect to untrusted server?"
+msgstr "Свързване с непроверен сървър?"
+
+#: src/mn-client-session.c:471
+msgid "Co_nnect"
+msgstr "Свъ_рзване"
+
+#: src/mn-client-session.c:527
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr ""
+
+#: src/mn-client-session.c:553
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "неуспех при преглед на отговор \"%s\""
+
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "неуспех при четенето от сървър: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "неуспех при четенето от сървър: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:746
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "неуспех при записването на сървър: %s"
+
+#: src/mn-client-session.c:782
+msgid "unable to write to server: EOF"
+msgstr "неуспех при записването на сървър: EOF"
+
+#: src/mn-client-session.c:814
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr ""
+
+#: src/mn-client-session.c:917
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr ""
+
+#: src/mn-client-session.c:926
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr ""
+
+#: src/mn-client-session.c:932
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr ""
+
+#: src/mn-client-session.c:966
+#, c-format
+msgid "warning: unable to set SASL security properties: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1005
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr ""
+
+#: src/mn-client-session.c:1009
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1013
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1063
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr ""
+
+#: src/mn-client-session.c:1067
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr ""
+
+#. compliance error
+#: src/mn-client-session.c:1072
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1075
+msgid ""
+"the server sent a SASL challenge, but there was a pending initial SASL "
+"client response"
+msgstr ""
+
+#: src/mn-client-session.c:1089
+msgid ""
+"the server did not send a SASL challenge, but there was no pending initial "
+"SASL client response"
+msgstr ""
+
+#: src/mn-client-session.c:1112
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr ""
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: src/mn-client-session.c:1117
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr ""
+
+#: src/mn-client-session.c:1123
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr ""
+
+#: src/mn-conf.c:123
+#, c-format
+msgid "recursively unsetting %s"
+msgstr ""
+
+#: src/mn-conf.c:127
+msgid "syncing the GConf database"
+msgstr "синхронизиране на базата данни на GConf"
+
+#: src/mn-conf.c:130
+msgid "completed"
+msgstr "завършено"
+
+#: src/mn-gmail-mailbox-properties.gob:79
+msgid "Your Gmail username"
+msgstr "Вашето Gmail потребителско име"
+
+#: src/mn-gmail-mailbox-properties.gob:80
+msgid "Your Gmail password"
+msgstr "Вашата парола в Gmail"
+
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "неуспех при преглед на отговор \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr "влизане"
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "влизането е неуспешно"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "неуспех при пренасянето на данни: %s"
+
+#: src/mn-gmail-mailbox.gob:409
+msgid "successfully logged in"
+msgstr "успешно влязъл в"
+
+#: src/mn-gmail-mailbox.gob:487
+msgid "searching for unread mail"
+msgstr "търсене за непрочетена поща"
+
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "търсене за непрочетена поща"
+
+#: src/mn-gmail-mailbox.gob:604
+msgid "unable to parse Gmail data"
+msgstr "неуспех при прегледа на данни от Gmail"
+
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "неуспех при намирането на %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "неуспех при записването на сървър: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "неуспех при намирането на %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "неуспех при следенето %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "неуспех при затварянето на папката: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
+msgid "Mailbox:"
+msgstr "Пощенска кутия:"
+
+#: src/mn-imap-mailbox-properties.gob:98
+msgid "in_box"
+msgstr "ку_тия"
+
+#: src/mn-imap-mailbox-properties.gob:109
+msgid "oth_er:"
+msgstr "др_уги"
+
+#: src/mn-imap-mailbox-properties.gob:124
+msgid "The hostname or IP address of the IMAP server"
+msgstr "Хостът или IP адресът на IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:125
+msgid "Your username on the IMAP server"
+msgstr "Потребителското ви име за IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:126
+msgid "Your password on the IMAP server"
+msgstr "Паролата ви за IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
+msgid "The port number of the IMAP server"
+msgstr "Номера на порта на IMAP сървъра"
+
+#: src/mn-imap-mailbox-properties.gob:129
+msgid "The mailbox name"
+msgstr "Име на пощенската кутия"
+
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
+msgid "SSL/TLS support has not been compiled in"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:203
+msgid "server did not send capabilities"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:318
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:319
+msgid "unable to login"
+msgstr "неуспех при влизането"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "сървърът не изпраща състоянието"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "сървърът не изпраща състоянието"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "неуспех при свързването: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
+msgid "server did not send status"
+msgstr "сървърът не изпраща състоянието"
+
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
+msgid "unknown server error"
+msgstr "неизвестна грешка в сървъра"
+
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
+msgid "server does not support in-band SSL/TLS"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "неизвестен механизъм за идентификация \"%s\""
+
+#: src/mn-imap-mailbox.gob:972
+msgid "falling back to IMAP LOGIN authentication"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
+msgid "authentication failed"
+msgstr "неуспешна идентификация"
+
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+msgid "_Update"
+msgstr "_Актуализиране"
+
+#: src/mn-mail-icon.gob:90
+msgid "R_emove From Notification Area"
+msgstr "Пре_махване от зоната за известяване"
+
+#: src/mn-mailbox-properties-dialog.c:109
+msgid "Add a Mailbox"
+msgstr "Добавяне на пощенска кутия"
+
+#: src/mn-mailbox-properties-dialog.c:328
+#, c-format
+msgid "%s Properties"
+msgstr "%s Настройки"
+
+#: src/mn-mailbox-properties-util.c:77
+msgid "_Username:"
+msgstr "_Име:"
+
+#: src/mn-mailbox-properties-util.c:87
+msgid "_Password:"
+msgstr "_Парола:"
+
+#: src/mn-mailbox-properties-util.c:154
+msgid "Connection type:"
+msgstr "Тип на връзката:"
+
+#: src/mn-mailbox-properties-util.c:161
+msgid "Port:"
+msgstr "Порт:"
+
+#: src/mn-mailbox-properties-util.c:189
+msgid "_Authentication mechanism:"
+msgstr "Механизъм за _идентификация:"
+
+#: src/mn-mailbox-properties.c:63
+msgid "Label"
+msgstr "Етикет"
+
+#: src/mn-mailbox-properties.c:64
+msgid "The marked up text to show in the type combo box"
+msgstr ""
+
+#: src/mn-mailbox-properties.c:69
+msgid "Size group"
+msgstr "Размер на групата"
+
+#: src/mn-mailbox-properties.c:70
+msgid "A GtkSizeGroup for aligning control labels"
+msgstr ""
+
+#: src/mn-mailbox-properties.c:75
+msgid "Complete"
+msgstr "Завършено"
+
+#: src/mn-mailbox-properties.c:76
+msgid "Whether the properties are completely filled or not"
+msgstr ""
+
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+msgid "Mailbox"
+msgstr "Пощенска кутия"
+
+#. format column
+#: src/mn-mailbox-view.gob:279
+msgid "Format"
+msgstr "Формат"
+
+#: src/mn-mailbox-view.gob:569
+msgid "Unable to add mailbox"
+msgstr "Неуспех при добавянето на пощенската кутия"
+
+#: src/mn-mailbox-view.gob:569
+msgid "The mailbox is already in the list."
+msgstr "Пощенската кутия е вече в списъка."
+
+#: src/mn-mailbox.gob:133
+msgid "The mailbox URI"
+msgstr "Адресът на пощенската кутия"
+
+#: src/mn-mailbox.gob:144
+msgid "The mailbox human-readable name"
+msgstr "Името на пощенската кутия във формат разбираем от хора"
+
+#: src/mn-mailbox.gob:148
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr ""
+
+#: src/mn-mailbox.gob:153
+msgid "Whether the mailbox has new mail or not"
+msgstr ""
+
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
+msgid "The mailbox error, if any"
+msgstr "Грешката в пощенската кутия, ако има"
+
+#: src/mn-mailbox.gob:310
+msgid "does not exist"
+msgstr "не съществува"
+
+#: src/mn-mailbox.gob:342
+msgid "unknown format"
+msgstr "непознат формат"
+
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Известяването за поща не можа да разреши моменталното известяване за една "
+"или повече пощенски кутии. %s"
+
+#: src/mn-mailbox.gob:426
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:437
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:448
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:464
+msgid "A monitoring error has occurred"
+msgstr "Получи се грешка при наблюдението"
+
+#: src/mn-mailbox.gob:465
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Известяването за поща не можа да разреши моменталното известяване за една "
+"или повече пощенски кутии. %s"
+
+#: src/mn-mailboxes.gob:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+
+#: src/mn-mailboxes.gob:266
+#, c-format
+msgid "%s is unsupported: %s"
+msgstr "%s е неподдържан: %s"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has new mail"
+msgstr "%s има поща"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has no new mail"
+msgstr "%s няма нова поща"
+
+#: src/mn-mailboxes.gob:323
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s докладва за грешка: %s"
+
+#: src/mn-maildir-mailbox.gob:119
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "неуспех при отварянето на папка \"нови\": %s"
+
+#: src/mn-maildir-mailbox.gob:161
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "неуспех при отварянето на папка \"нови\": %s"
+
+#: src/mn-maildir-mailbox.gob:164
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "грешка при четенето на папката \"нови\": %s"
+
+#: src/mn-main.c:97
+#, c-format
+msgid "Compiled-in mailbox backends: %s\n"
+msgstr ""
+
+#: src/mn-main.c:114
+#, c-format
+msgid "Compiled-in features: %s\n"
+msgstr "Компилирани възможности: %s\n"
+
+#: src/mn-main.c:166
+msgid "Enable informational output"
+msgstr "Разрешаване на информационния изход"
+
+#: src/mn-main.c:175
+msgid "List compiled-in features and exit"
+msgstr "Изписване на компилираните възможности и излизане"
+
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Изобразяване на диалоговия прозорец с информацията"
+
+#: src/mn-main.c:193
+msgid "Display the properties dialog"
+msgstr "Показване на диалоговия прозорец с настройките"
+
+#: src/mn-main.c:202
+msgid "Display the about dialog"
+msgstr "Изобразяване на диалоговия прозорец с информацията"
+
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
+msgid "Update the mail status"
+msgstr "Актуализиране състоянието на пощата"
+
+#: src/mn-main.c:229
+msgid "Report the mail status"
+msgstr "Докладване за състоянието на пощата"
+
+#: src/mn-main.c:238
+msgid "Unset obsolete GConf configuration and exit"
+msgstr "Премахване на остарелите настройки в GConf и излизане"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: src/mn-main.c:264
+msgid "multi-threading is not available"
+msgstr "много-нишки не е налично"
+
+#: src/mn-main.c:309
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+
+#: src/mn-main.c:314
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Неуспех при инициализирането на библиотеката GnomeVFS."
+
+#: src/mn-main.c:350
+msgid "updating the mail status"
+msgstr "актуализиране състоянието на пощата"
+
+#: src/mn-main.c:368
+msgid "Mail Notification is already running"
+msgstr "Известяването за поща вече е стартирано"
+
+#: src/mn-main.c:375
+msgid ""
+"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
+"Please check your Mail Notification installation."
+msgstr ""
+
+#: src/mn-main.c:379
+msgid ""
+"Bonobo was unable to register the automation server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo не успя да регистрира сървъра за автоматизация. Моля, проверете "
+"инсталацията на известяването за поща."
+
+#: src/mn-mbox-mailbox.gob:221
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr "грешка при четенето на пощенската кутия: %s"
+
+#: src/mn-mbox-mailbox.gob:230
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "грешка при отварянето на пощенската кутия: %s"
+
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "неуспех при преглед на отговор \"%s\""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr "грешка при четенето на .mh_sequences: %s"
+
+#: src/mn-mh-mailbox.gob:196
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr "неуспех при отварянето на .mh_sequences: %s"
+
+#: src/mn-pending-mailbox.gob:35
+msgid "detecting"
+msgstr "засичане"
+
+#: src/mn-pi-mailbox-properties.gob:76
+msgid "_Hostname:"
+msgstr "_Хост:"
+
+#: src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Подробности"
+
+#: src/mn-pi-mailbox-properties.gob:106
+msgid "sta_ndard"
+msgstr "стан_дартно"
+
+#: src/mn-pi-mailbox-properties.gob:116
+msgid "_in-band SSL/TLS"
+msgstr "_in-band SSL/TLS"
+
+#: src/mn-pi-mailbox-properties.gob:126
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS на отделен по_рт"
+
+#: src/mn-pop3-mailbox-properties.gob:86
+msgid "The hostname or IP address of the POP3 server"
+msgstr "Хостът или IP адресът на POP3 сървъра"
+
+#: src/mn-pop3-mailbox-properties.gob:87
+msgid "Your username on the POP3 server"
+msgstr "Потребителското име в POP3 сървъра"
+
+#: src/mn-pop3-mailbox-properties.gob:88
+msgid "Your password on the POP3 server"
+msgstr "Паролата ви в POP3 сървъра"
+
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
+msgid "The port number of the POP3 server"
+msgstr "Номера на порта на POP3 сървъра"
+
+#: src/mn-pop3-mailbox.gob:271
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "неизвестна грешка в сървъра"
+
+#: src/mn-pop3-mailbox.gob:666
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-pop3-mailbox.gob:831
+msgid "server does not support APOP authentication"
+msgstr "Сървърът не поддържа идентификация тип APOP"
+
+#: src/mn-pop3-mailbox.gob:859
+msgid "falling back to APOP authentication"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:864
+msgid "falling back to USER/PASS authentication"
+msgstr ""
+
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Завършено"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
+msgid "No mailbox selected."
+msgstr "Няма избрана кутия."
+
+#: src/mn-properties.c:245
+#, fuzzy, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "%i избрана кутия."
+msgstr[1] "%i избрана кутия."
+
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Имате поща."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Грешка с командите се получи в известяването за поща"
+
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Неуспех при стартирането на нова пощенска команда: %s."
+
+#: src/mn-shell.gob:270
+#, fuzzy
+msgid "The following mailbox has new mail:\n"
+msgid_plural "The following mailboxes have new mail:\n"
+msgstr[0] "Следната пощенска кутия има нова поща:\n"
+msgstr[1] "Следната пощенска кутия има нова поща:\n"
+
+#: src/mn-shell.gob:274
+msgid "You have no new mail."
+msgstr "Нямата нова поща."
+
+#: src/mn-shell.gob:277
+#, fuzzy
+msgid "The following mailbox reported an error:\n"
+msgid_plural "The following mailboxes reported an error:\n"
+msgstr[0] "Следната пощенска кутия докладва за грешка:\n"
+msgstr[1] "Следната пощенска кутия докладва за грешка:\n"
+
+#: src/mn-shell.gob:282
+#, fuzzy
+msgid "The following mailbox is unsupported:\n"
+msgid_plural "The following mailboxes are unsupported:\n"
+msgstr[0] "Следните пощенски кутии не се поддържат:\n"
+msgstr[1] "Следните пощенски кутии не се поддържат:\n"
+
+#: src/mn-ssl.c:79
+msgid "unknown SSL/TLS error"
+msgstr "неизвестна SSL/TLS грешка"
+
+#: src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Избор на _всички"
+
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "неуспех при отварянето на папката: %s"
+
+#: src/mn-sylpheed-mailbox.gob:180
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "неуспех при затварянето на папката: %s"
+
+#: src/mn-sylpheed-mailbox.gob:183
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "грешка при четенето на папката: %s"
+
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
+msgid "System Mailbox"
+msgstr "Системна кутия"
+
+#: src/mn-system-mailbox-properties.gob:57
+#, c-format
+msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgstr ""
+"Системната ви пощенска кутия (<span weight=\"bold\">%s</span>) ще бъде "
+"използвана."
+
+#: src/mn-system-mailbox-properties.gob:64
+msgid ""
+"The location of your system mailbox could not be detected. Please set the "
+"MAIL environment variable."
+msgstr ""
+"Местоположението на Вашата системна пощенска кутия не може да бъде засечено. "
+"Моля, настройте променливата MAIL environment."
+
+#: src/mn-unsupported-mailbox.gob:33
+msgid "The reason why the mailbox is unsupported"
+msgstr "Причината защо пощенската кутия е неподдържана"
+
+#: src/mn-unsupported-mailbox.gob:40
+msgid "unsupported"
+msgstr "не е поддържан"
+
+#: src/mn-util.c:233
+#, c-format
+msgid "error loading image: %s"
+msgstr "грешка при зареждането на изображение: %s"
+
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "уиджета %s не е намерен в интерфейса %s"
+
+#: src/mn-util.c:385
+msgid "received an invalid URI list"
+msgstr "получен е некоректен списък с адреси"
+
+#: src/mn-util.c:421
+msgid "received an invalid Mozilla URL"
+msgstr "получен е некоректен Mozilla адрес"
+
+#: src/mn-util.c:514
+msgid "Unable to display help"
+msgstr "Неуспех при показването на помощта"
+
+#: src/mn-util.c:528
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Неуспех при създаването на нишка: %s."
+
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Получи се сериозна грешка в известяването за поща"
+
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "неуспех при свързването с %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1
+msgid "_Mailbox type:"
+msgstr "_Тип на пощенската кутия:"
+
+#: ui/properties.glade.h:1
+msgid " "
+msgstr " "
+
+#: ui/properties.glade.h:2
+msgid "*"
+msgstr "*"
+
+#: ui/properties.glade.h:3
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Основни</span>"
+
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Пощенски кутии</span>"
+
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Команди</span>"
+
+#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
+msgid "Mail Notification Properties"
+msgstr "Настройки на известяването за поща"
+
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Пощенска кутия"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Местоположение:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "Времевият интервал за изчакване между проверките за нова поща"
+
+#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr "Командата, която да се изпълни при пристигането на нова поща"
+
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Дали иконата за състоянието да започне да мига при грешки или не"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr "Дали да се стартира команда при пристигането на нова поща или не"
+
+#: ui/properties.glade.h:21
+msgid ""
+"Whether to start Mail Notification when you log into your GNOME session or "
+"not"
+msgstr ""
+"Дали да се стартира известяването за поща, когато влизате в GNOME или не"
+
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Мигане при грешки"
+
+#: ui/properties.glade.h:24
+msgid "_Delay between mail checks:"
+msgstr "_Време между проверките за поща:"
+
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Стартиране на команда при пристигането на нова поща"
+
+#: ui/properties.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "_Стартиране на известяването за поща при влизане в GNOME"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
+msgid "minutes"
+msgstr "минути"
+
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
+msgid "seconds"
+msgstr "секунди"
+
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
+#, fuzzy
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Пощенски кутии</span>"
+
+#: ui/welcome.glade.h:1
+msgid ""
+"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+"\n"
+"Mail Notification has been loaded successfully.\n"
+"\n"
+"Since this is the first time you run Mail Notification, you might want to "
+"configure it.\n"
+"\n"
+"Note: this message will not be shown anymore. To configure Mail Notification "
+"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
+"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
+"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
+"More Preferences → Mail Notification</span>)."
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Първо стартиране</span>\n"
+"\n"
+"Известяването за поща беше стартирано успешно.\n"
+"\n"
+"След като стартирате за първи път известяването за поща то сигурно желаете "
+"да го настроите.\n"
+"\n"
+"Бележка: няма да видите това съобщение отново. За да настроите известяването "
+"за поща отново, то изберете <span weight=\"bold\">Програми</span> → "
+"<span·weight=\"bold\">Настройки на средата</span> → <span weight=\"bold"
+"\">Известяване за поща</span> (или при някои системи <span weight=\"bold"
+"\">Програми → Настройки → Допълнителни настройки → Известяване за поща</"
+"span>)."
+
+#: ui/welcome.glade.h:8
+msgid "_Configure Mail Notification"
+msgstr "_Настройки на известяването за поща"
+
+#: ui/welcome.glade.h:9
+msgid "_Skip configuration"
+msgstr "_Пропускане на настройването"
+
+#~ msgid "Double-clicked command"
+#~ msgstr "Команда при двойна натискане"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Стартиране на команда при двойно натискане на иконата"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr ""
+#~ "Командата, която да се стартира при двойно натискане на иконата - писмо."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr "Дали да се стартира команда при натискането на иконата-писмо или не"
+
+#~ msgid "_Run %s"
+#~ msgstr "_Стартиране %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "_Стартиране на стандартното действие"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "След изпълнението на командата се получи грешка"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Неуспех при стартирането на командата: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr ""
+#~ "Командата, която да се стартира когато иконата-писмо се натисне два пъти"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "При пристигане на _нова поща:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "При _двойно натискане:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Дали да се стартира команда при двойно натискане на иконата или не"
diff --git a/po/de.gmo b/po/de.gmo
Binary files differ.
diff --git a/po/de.po b/po/de.po
@@ -10,8 +10,8 @@ msgid ""
msgstr ""
"Project-Id-Version: mail-notification 0.6.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
-"PO-Revision-Date: 2004-09-08 23:26+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-09-10 00:51+0200\n"
"Last-Translator: Hendrik Brandt <eru@gmx.li>\n"
"Language-Team: German <gnome-de@gnome.org>\n"
"MIME-Version: 1.0\n"
@@ -24,7 +24,6 @@ msgid "Mail Notification automation"
msgstr "Automatische E-Mail-Eingangsüberwachnung"
#: data/GNOME_MailNotification_Automation.server.in.in.h:2
-#, fuzzy
msgid "Mail Notification automation factory"
msgstr "Automatische E-Mail-Eingangsüberwachnung"
@@ -34,8 +33,8 @@ msgstr "Die E-Mail-Eingangsüberwachung einstellen"
#: data/mail-notification-properties.desktop.in.h:2
#: data/mail-notification.desktop.in.h:2
-#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
msgid "Mail Notification"
msgstr "E-Mail-Eingangsüberwachung"
@@ -44,117 +43,203 @@ msgid "Get notified when new mail arrives"
msgstr "Informiert Sie wenn eine neue Nachricht eintrifft"
#: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Bei Fehler blinken"
+
+#: data/mail-notification.schemas.in.h:3
msgid "Delay between mail checks (minutes part)."
msgstr "Abstand zwischen Eingangsüberprüfung (Minutenteil)."
-#: data/mail-notification.schemas.in.h:3
+#: data/mail-notification.schemas.in.h:4
msgid "Delay between mail checks (seconds part)."
msgstr "Abstand zwischen Eingangsüberprüfung (Sekundenteil)."
-#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
-msgstr "Auszuführender Befehl bei Doppelklick"
-
#: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Fingerabdrücke vertrauensvoller X509-Zertifikate"
+
+#: data/mail-notification.schemas.in.h:8
msgid "Has already been run"
msgstr "Wurde schon einmal gestartet"
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Höhe des Einstellungen-Dialogs"
+
+#: data/mail-notification.schemas.in.h:10
msgid "Height of properties dialog"
msgstr "Höhe des Einstellungen-Dialogs"
-#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
msgstr "Liste der Postfächer"
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:15
msgid "Minutes between mail checks"
msgstr "Minuten zwischen den Aktualisierungen"
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
msgid "New mail command"
msgstr "Befehl bei neuer Nachricht"
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:18
msgid "Run a command when new mail arrives"
msgstr "Einen Befehl ausführen, wenn eine neue Nachricht eintrifft"
-#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
-msgstr ""
-"Einen Befehl ausführen, wenn das Nachrichtensymbol doppelt angeklickt wird"
-
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:19
msgid "Seconds between mail checks"
msgstr "Sekunden zwischen den Aktualisierungen"
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
+
+#: data/mail-notification.schemas.in.h:23
msgid "The command to run when new mail arrives."
msgstr "Der Befehl der ausgeführt wird, wenn eine neue Nachricht eintrifft."
-#: data/mail-notification.schemas.in.h:15
-msgid "The command to run when the icon is double-clicked."
-msgstr ""
-"Der Befehl der ausgeführt wird, wenn das Nachrichtensymbol doppelt "
-"angeklickt wird."
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Die Höhe des Einstellungsdialogs in Pixel."
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:25
msgid "The height of the properties dialog in pixels."
msgstr "Die Höhe des Einstellungsdialogs in Pixel."
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:26
msgid "The list of mailboxes to monitor."
msgstr "Die Liste der zu überwachenden Postfächer."
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
msgid ""
"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
"certificate."
msgstr ""
+"Die Liste vertrauensvoller SSL/TLS-Server (Host-Name:Port) ohne X509-"
+"Zertifikat."
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
msgid ""
"The list of trusted X509 certificates, represented by their MD5 fingerprint."
msgstr ""
+"Die Liste vertrauensvoller X509-Zertifikate, repräsentiert durch ihre MD5-"
+"Fingerabdrücke."
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Die Breite des Einstellungen-Dialogs in Pixel."
+
+#: data/mail-notification.schemas.in.h:33
msgid "The width of the properties dialog in pixels."
msgstr "Die Breite des Einstellungen-Dialogs in Pixel."
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
msgid "Trusted servers list"
-msgstr ""
+msgstr "Liste vertrauensvoller Server"
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
msgid "Whether Mail Notification has already been run or not."
msgstr ""
"Legt fest, ob die E-Mail-Eingangsüberwachnung schon einmal gestartet wurde."
-#: data/mail-notification.schemas.in.h:23
-#, fuzzy
+#: data/mail-notification.schemas.in.h:36
msgid "Whether the status icon should blink on errors or not."
-msgstr "Legt fest, ob das Bild blinkt oder nicht"
+msgstr ""
+"Legt fest, ob das Nachrichtensymbol bei Auftreten eines Fehlers blinkt."
-#: data/mail-notification.schemas.in.h:24
-msgid "Whether to run a command when new mail arrives or not."
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
msgstr ""
"Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
-#: data/mail-notification.schemas.in.h:25
-msgid "Whether to run a command when the icon is double-clicked or not."
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
msgstr ""
-"Legt fest, ob ein Befehl ausgeführt wird, wenn das Nachrichtensymbol doppelt "
-"angeklickt wird."
+"Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+msgid "Whether to run a command when new mail arrives or not."
+msgstr ""
+"Legt fest, ob ein Befehl ausgeführt wird, wenn eine neue Nachricht eintrifft."
+
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Breite des Einstellungen-Dialogs"
+
+#: data/mail-notification.schemas.in.h:42
msgid "Width of properties dialog"
msgstr "Breite des Einstellungen-Dialogs"
@@ -170,133 +255,120 @@ msgstr "Ausrichtung"
msgid "The orientation of the tray."
msgstr "Die Ausrichtung des Benachrichtigungsfeldes"
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
msgid "A Mail Notification Icon"
msgstr ""
"Ein Benachrichtigungssymbol das erscheint, wenn neue Nachrichten in Ihren "
"Postfächern liegen."
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
msgid "Jean-Yves Lefort <jylefort@brutele.be>"
msgstr "Hendrik Brandt <eru@gmx.li>"
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
msgid "<span style=\"italic\">autodetect</span>"
msgstr "<span style=\"italic\">automatisch erkennen</span>"
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
msgid "_Location:"
msgstr "_Ort:"
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
msgid "_Browse..."
msgstr "_Durchsuchen..."
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
msgid "The URI of the mailbox"
msgstr "Die Adresse des Postfachs"
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
msgid "Select a File or Folder"
msgstr "Wählen Sie eine Datei oder ein Verzeichnis"
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
msgid "Whether the image is blinking or not"
msgstr "Legt fest, ob das Bild blinkt oder nicht"
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr "Es konnte nicht vom Server gelesen werden: %s"
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr "Es konnte nicht vom Server gelesen werden: EOF"
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr "Die Daten konnten nicht per SASL dekodiert werden: %s"
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
#, c-format
msgid "resolving %s"
msgstr "%s wird kontaktiert"
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
#, c-format
msgid "unable to resolve %s: %s"
msgstr "%s konnte nicht kontaktiert werden: %s"
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
#, c-format
msgid "%s: unsupported address family"
msgstr "%s: Adressfamilie wird nicht unterstützt"
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
#, c-format
msgid "%s: unable to create socket: %s"
msgstr "%s: Socket konnte nciht erstellt werden: %s"
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
#, c-format
msgid "connecting to %s (%s) port %i"
msgstr "Verbindung mit %s (%s) über Port %i wird hergestellt"
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
#, c-format
msgid "unable to connect: %s"
msgstr "Es konnte nicht verbunden werden: %s"
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
msgid "connected successfully"
msgstr "Verbindung hergestellt"
#. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
#, c-format
msgid "unable to connect to %s"
msgstr "Es konnte keine Verbindung mit %s hergestellt werden"
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
#, c-format
msgid "unable to initialize the OpenSSL library: %s"
msgstr "Die OpenSSL-Bibliothek konnte nicht initializiert werden: %s"
-#: src/mn-client-session.c:380
-#, fuzzy, c-format
+#: src/mn-client-session.c:325
+#, c-format
msgid "unable to create a SSL/TLS object: %s"
-msgstr "Es konnte kein SSL-Objekt erzeugt werden: %s"
+msgstr "Es konnte kein SSL/TLS-Objekt erzeugt werden: %s"
-#: src/mn-client-session.c:386
-#, fuzzy, c-format
+#: src/mn-client-session.c:331
+#, c-format
msgid "unable to set the SSL/TLS file descriptor: %s"
-msgstr "Es konnte kein SSL-Dateideskriptor gesetzt werden: %s"
+msgstr "Es konnte kein SSL/TLS-Dateideskriptor gesetzt werden: %s"
-#: src/mn-client-session.c:392
-#, fuzzy, c-format
+#: src/mn-client-session.c:337
+#, c-format
msgid "unable to perform the SSL/TLS handshake: %s"
-msgstr "Es konnte kein SSL-Dateideskriptor gesetzt werden: %s"
+msgstr "Es konnte kein SSL/TLS-Handshake durchgeführt werden: %s"
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
msgid "untrusted server"
-msgstr ""
+msgstr "nicht vertrauensvolle Server"
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
#, c-format
msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
-msgstr ""
+msgstr "Eine SSL/TLS-Zwischenschicht ist jetzt aktiv (%s, %s %i-Bit)"
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
#, c-format
msgid "%s, fingerprint: %s"
-msgstr ""
+msgstr "%s, Fingerabdruck %s"
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
msgid "missing certificate"
-msgstr ""
+msgstr "kein Zertifikat"
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
#, c-format
msgid ""
"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -307,246 +379,320 @@ msgid ""
"to \"%s\". If you choose to connect to the server, this message will not be "
"shown again."
msgstr ""
+"Die E-Mail-Eingangsüberwachnung konnte »%s« nicht vertrauen (%s). Es ist "
+"möglich, dass ein Anderer Ihre Kommunikation abfängt um Zugriff auf "
+"Ihrepersönlichen Informationen zu bekommen.\n"
+"\n"
+"Sie sollten sich nur zu diesem Server verbinden, wenn Sie sicher sind, dass "
+"sie auch tatsächlich mit »%s« verbunden sind. Falls Sie sich dennoch mit dem "
+"Server verbinden lassen, wird dieser Dialog in Zukunft nicht mehr angeziegt."
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
msgid "Connect to untrusted server?"
-msgstr ""
+msgstr "Möchten Sie sich mit einem nicht vertrauenswürdigen Server verbinden?"
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
msgid "Co_nnect"
-msgstr ""
+msgstr "_Verbinden"
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
#, c-format
msgid "response \"%s\" is not valid in current context"
msgstr "Die Antwort »%s« ist in diesem Kontext nicht zugelassen"
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
#, c-format
msgid "unable to parse response \"%s\""
msgstr "Die Antwort »%s« konnte nicht analysiert werden"
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "Es konnte nicht vom Server gelesen werden: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "Es konnte nicht vom Server gelesen werden: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "Die Daten konnten nicht per SASL dekodiert werden: %s"
+
+#: src/mn-client-session.c:746
#, c-format
msgid "unable to encode data using SASL: %s"
msgstr "Die Daten konnten nicht per SASL kodiert werden: %s"
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
#, c-format
msgid "unable to write to server: %s"
msgstr "Es konnte nicht auf den Server geschrieben werden: %s"
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
msgid "unable to write to server: EOF"
msgstr "Es konnte nicht auf den Server geschrieben werden: EOF"
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
#, c-format
msgid "unable to encode Base64: %s"
msgstr "Es konnte nicht mit Base64 kodiert werden: %s"
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
#, c-format
msgid "unable to initialize the SASL library: %s"
msgstr "Die SASL-Bibliothek konnte nicht initializiert werden: %s"
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
#, c-format
msgid "unable to retrieve local address of socket: %s"
msgstr "Die lokale Adresse des Socket konnte nicht herausgefunden werden: %s"
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
#, c-format
msgid "unable to retrieve remote address of socket: %s"
msgstr ""
"Die entfernte Adresse des Socket konnte nicht herausgefunden werden: %s"
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
#, c-format
msgid "warning: unable to set SASL security properties: %s"
msgstr ""
"Warnung: Die SASL-Sicherheitseigenschaften konnten nicht gesetzt werden: %s"
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
msgid ""
"unable to start SASL authentication: SASL asked for something we did not know"
msgstr ""
"Die SASL-Authentifizierung konnte nicht gestartet werden: es wurde eine "
"unbekannte Anfrage von SASL gestellt"
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
#, c-format
msgid "unable to start SASL authentication: %s"
msgstr "Die SASL-Authentifizierung konnte nicht gestartet werden: %s"
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
#, c-format
msgid "unable to create a SASL connection: %s"
msgstr "Es konnte keine Verbindung mit SASL erzeugt werden: %s"
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
msgid "SASL asked for something we did not know, aborting SASL authentication"
msgstr ""
"Es wurde eine unbekannte Anfrage von SASL gestellt, SASL-Authentifizierung "
"wird abgebrochen"
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
#, c-format
msgid "%s, aborting SASL authentication"
msgstr "%s, SASL-Authentifizierung wird abgebrochen"
#. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
#, c-format
msgid "unable to decode Base64 input from server: %s"
msgstr "Die Server-seitige Base64-Eingabe konnte nicht dekodiert werden: %s"
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
msgid ""
"the server sent a SASL challenge, but there was a pending initial SASL "
"client response"
msgstr ""
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
msgid ""
"the server did not send a SASL challenge, but there was no pending initial "
"SASL client response"
msgstr ""
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
#, c-format
msgid "a SASL security layer of strength factor %i is now active"
msgstr "Die SASL-Sicherheitsebene der Stärke %i ist jetzt aktiv"
#. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1028
+#: src/mn-client-session.c:1117
#, c-format
msgid "unable to get SASL_MAXOUTBUF property: %s"
msgstr "Der Wert SASL_MAXOUTBUF wurde nicht gefunden: %s"
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
#, c-format
msgid "warning: unable to get SASL_SSF property: %s"
msgstr "Warnung: Der Wert SASL_SSF wurde nicht gefunden: %s"
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
#, c-format
msgid "recursively unsetting %s"
-msgstr ""
+msgstr "%s rekursiv zurück setzen"
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
msgid "syncing the GConf database"
-msgstr ""
+msgstr "Synchronisiere mit der GConf-Datenbank"
-#: src/mn-conf.c:116
-#, fuzzy
+#: src/mn-conf.c:130
msgid "completed"
-msgstr "Vollständig"
+msgstr "Abgeschlossen"
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
msgid "Your Gmail username"
msgstr "Ihr Gmail-Benutzername"
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
msgid "Your Gmail password"
msgstr "Ihr Gmail-Passwort"
-#: src/mn-gmail-mailbox.gob:220
-#, fuzzy
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "Die Antwort »%s« konnte nicht analysiert werden"
+
+#: src/mn-gmail-mailbox.gob:257
msgid "logging in"
msgstr "Anmelden bei"
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "Anmeldung fehlgeschlagen"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
#, c-format
msgid "unable to transfer data: %s"
msgstr "Daten konnten nicht übertragen werden: %s"
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
-msgid "login failed"
-msgstr "Anmeldung fehlgeschlagen"
-
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:409
msgid "successfully logged in"
msgstr "Anmeldung war erfolgreich"
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
msgid "searching for unread mail"
msgstr "Es wird nach ungelesenen Nachrichten gesucht"
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "Es wird nach ungelesenen Nachrichten gesucht"
+
+#: src/mn-gmail-mailbox.gob:604
msgid "unable to parse Gmail data"
msgstr "Die Gmail-Daten konnte nicht analysiert werden"
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "%s konnte nicht kontaktiert werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "Es konnte nicht auf den Server geschrieben werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "%s konnte nicht kontaktiert werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "%s konnte nicht überwacht werden: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "Ordner konnte nicht geschlossen werden: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
msgid "Mailbox:"
msgstr "Postfach:"
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
msgid "in_box"
msgstr "In_box"
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
msgid "oth_er:"
msgstr "_Anderer:"
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
msgid "The hostname or IP address of the IMAP server"
msgstr "Der Name oder die IP-Adresse des IMAP-Servers"
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
msgid "Your username on the IMAP server"
msgstr "Ihr Benutzername auf dem IMAP-Server"
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
msgid "Your password on the IMAP server"
msgstr "Ihr Passwort auf dem IMAP-Server"
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
msgid "The port number of the IMAP server"
msgstr "Die Port-Nummer auf dem IMAP-Server"
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
msgid "The mailbox name"
msgstr "Der Postfachname"
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
-#, fuzzy
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
msgid "SSL/TLS support has not been compiled in"
msgstr ""
-"Die Unterstützung für SSL wurde beim Erstellen des Programms nicht eingebaut"
+"Die Unterstützung für SSL/TLS wurde beim Erstellen des Programms nicht "
+"eingebaut"
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
msgid "server did not send capabilities"
msgstr "Der Server hat seine Fähigkeiten nicht bekannt gegeben"
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
msgstr ""
"Der Server gibt LOGINDISABLED zurück, LOGIN-Authentifizierung wird nicht "
"verwendet"
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
msgid "unable to login"
msgstr "Anmeldung fehlgeschlagen"
#. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "Der Server hat seinen Status nicht bekannt gegeben"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "Der Server hat seinen Status nicht bekannt gegeben"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "Es konnte nicht verbunden werden: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
msgid "server did not send status"
msgstr "Der Server hat seinen Status nicht bekannt gegeben"
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
msgid "unknown server error"
msgstr "Unbekannter Server-Fehler"
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
-#, fuzzy
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
msgid "server does not support in-band SSL/TLS"
-msgstr "Der Server unterstütz eine Authentifizierung per APOP nicht."
+msgstr "Der Server unterstütz kein band-internes SSL/TLS"
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
msgid ""
"a SASL authentication mechanism was selected but SASL support has not been "
"compiled in"
@@ -554,41 +700,32 @@ msgstr ""
"Sie haben eine Authentifizierung mit SASL ausgewählt, jedoch wurde die "
"Unterstützung für SASL beim Erstellen des Programms nicht eingebaut"
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
#, c-format
msgid "unknown authentication mechanism \"%s\""
msgstr "Unbekannte Authentifizierungsmethode »%s«"
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
msgid "falling back to IMAP LOGIN authentication"
msgstr "Es wird auf die Authentifizierung per IMAP LOGIN zurückgegriffen"
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
msgid "authentication failed"
msgstr "Authentifizierung fehlgeschlagen"
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
msgid "_Update"
msgstr "_Aktualisieren"
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
msgid "R_emove From Notification Area"
msgstr "Aus dem Benachrichtigungsfeld entfernen"
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr "%s a_usführen"
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr "_Standard Aktion ausführen"
-
#: src/mn-mailbox-properties-dialog.c:109
msgid "Add a Mailbox"
msgstr "Ein Postfach hinzufügen"
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
#, c-format
msgid "%s Properties"
msgstr "%s Eigenschaften"
@@ -637,56 +774,63 @@ msgstr "Vollständig"
msgid "Whether the properties are completely filled or not"
msgstr "Legt fest, ob die Einstellungen vollständig ausgefüllt sind"
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
msgid "Mailbox"
msgstr "Postfach"
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
msgid "Format"
msgstr "Protokoll"
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "Unable to add mailbox"
msgstr "Postfach konnte nicht hinzugefügt werden"
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "The mailbox is already in the list."
msgstr "Dieses Postfach exisitiert bereits in Ihrer Liste."
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
msgid "The mailbox URI"
msgstr "Die Postfachadresse"
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
msgid "The mailbox human-readable name"
msgstr "Der lesbare Postfachname"
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
msgid "Whether the mailbox has to be manually checked or not"
msgstr "Legt fest, ob das Postfach manuell überprüft werden soll"
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
msgid "Whether the mailbox has new mail or not"
msgstr "Legt fest, ob das Postfach neue Nachrichten enthält"
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
msgid "The mailbox error, if any"
msgstr "Der Postfachfehler, falls vorhanden"
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
msgid "does not exist"
msgstr "existiert nicht"
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
msgid "unknown format"
msgstr "unbekanntes Format"
-#: src/mn-mailbox.gob:355
-#, c-format
-msgid "unable to monitor %s: %s"
-msgstr "%s konnte nicht überwacht werden: %s"
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Die E-Mail-Eingangsüberwachung konnte die umgehende Benachrichtigung für ein "
+"oder mehrere Postfächer nicht aktivieren: %s"
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
#, fuzzy, c-format
msgid ""
"As a fallback, they will be checked every %i second (this delay is "
@@ -695,17 +839,17 @@ msgid_plural ""
"As a fallback, they will be checked every %i seconds (this delay is "
"configurable from the Properties Dialog)."
msgstr[0] ""
-"Als Rücksicherung werden die Postfächer alle %i Sekunden überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Sekunden überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Sekunde überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Sekunden überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
msgstr[1] ""
-"Als Rücksicherung werden die Postfächer alle %i Sekunden überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Sekunden überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Sekunde überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Sekunden überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
#, fuzzy, c-format
msgid ""
"As a fallback, they will be checked every %i minute (this delay is "
@@ -714,17 +858,17 @@ msgid_plural ""
"As a fallback, they will be checked every %i minutes (this delay is "
"configurable from the Properties Dialog)."
msgstr[0] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
msgstr[1] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
#, fuzzy, c-format
msgid ""
"As a fallback, they will be checked approximately every %i minute (this "
@@ -733,111 +877,125 @@ msgid_plural ""
"As a fallback, they will be checked approximately every %i minutes (this "
"delay is configurable from the Properties Dialog)."
msgstr[0] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
msgstr[1] ""
-"Als Rücksicherung werden die Postfächer alle %i Minuten überprüft (Dieser "
-"Wert kann über den Einstellungen-Dialog angepasst werden).Als Rücksicherung "
-"werden die Postfächer alle %i Minuten überprüft (Dieser Wert kann über den "
-"Einstellungen-Dialog angepasst werden)."
+"Als Rücksicherung werden diese jede %i Minute überprüft (Dieser Wert kann "
+"über den Einstellungen-Dialog angepasst werden).Als Rücksicherung werden "
+"diese alle %i Minuten überprüft (Dieser Wert kann über den Einstellungen-"
+"Dialog angepasst werden)."
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
msgid "A monitoring error has occurred"
msgstr "Bei der Überwachung ist ein Fehler aufgetreten"
-#: src/mn-mailbox.gob:406
-#, fuzzy, c-format
+#: src/mn-mailbox.gob:465
+#, c-format
msgid ""
"Mail Notification was unable to enable immediate notification for one or "
"more mailboxes. %s"
msgstr ""
-"Die E-Mail-Eingangsüberwachung konnte die automatische Benachrichtigung für "
-"ein oder mehrere Postfächer nicht aktivieren: %s"
+"Die E-Mail-Eingangsüberwachung konnte die umgehende Benachrichtigung für ein "
+"oder mehrere Postfächer nicht aktivieren: %s"
+
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Legt fest, ob das Postfach manuell überprüft werden soll"
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:266
#, c-format
msgid "%s is unsupported: %s"
msgstr "%s wird nicht unterstützt: %s"
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has new mail"
msgstr "%s hat neue Nachrichten"
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has no new mail"
msgstr "%s hat keine neuen Nachrichten"
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
#, c-format
msgid "%s reported an error: %s"
msgstr "%s hat einen Fehler erzeugt: %s"
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
#, c-format
msgid "unable to open folder \"new\": %s"
msgstr "Der Ordner »new« konnte nicht geöffnet werden: %s"
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
#, c-format
msgid "unable to close folder \"new\": %s"
msgstr "Der Ordner »new« konnte nicht geschlossen werden: %s"
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
#, c-format
msgid "error while reading folder \"new\": %s"
msgstr "Fehler beim Lesen des Ordners »new«: %s"
-#: src/mn-main.c:85
+#: src/mn-main.c:97
#, c-format
msgid "Compiled-in mailbox backends: %s\n"
msgstr "Eingebaute Postfacharten: %s\n"
-#: src/mn-main.c:103
+#: src/mn-main.c:114
#, c-format
msgid "Compiled-in features: %s\n"
msgstr "Eingebaute Programmfähigkeiten: %s\n"
-#: src/mn-main.c:133
+#: src/mn-main.c:166
msgid "Enable informational output"
msgstr "Ausgabe von Informationen aktivieren"
-#: src/mn-main.c:142
+#: src/mn-main.c:175
msgid "List compiled-in features and exit"
msgstr "Eingebaute Programmfähigkeiten anzeigen und beenden"
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Den Info-Dialog anzeigen"
+
+#: src/mn-main.c:193
msgid "Display the properties dialog"
msgstr "Den Dialog zum Einstellen der E-Mail-Eingangsüberwachung anzeigen"
-#: src/mn-main.c:160
+#: src/mn-main.c:202
msgid "Display the about dialog"
msgstr "Den Info-Dialog anzeigen"
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
msgid "Update the mail status"
msgstr "Nach neuen Nachrichten sehen"
-#: src/mn-main.c:178
+#: src/mn-main.c:229
msgid "Report the mail status"
msgstr "Den aktuellen Nachrichten anzeigen"
-#: src/mn-main.c:187
+#: src/mn-main.c:238
msgid "Unset obsolete GConf configuration and exit"
-msgstr ""
+msgstr "Veraltete GConf-Konfiguration zurücksetzen und beenden"
#.
#. * We can't use mn_error_dialog() because gtk_init() has not been
#. * called yet.
#.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
msgid "multi-threading is not available"
msgstr "Multi-Threading steht nicht zur Verfügung"
-#: src/mn-main.c:258
+#: src/mn-main.c:309
msgid ""
"Bonobo could not locate the automation object. Please check your Mail "
"Notification installation."
@@ -845,19 +1003,19 @@ msgstr ""
"Bonobo konnte das Automatisierungsobjekt nicht finden. Bitte überprüfen Sie "
"Ihre Installation der E-Mail-Eingangsüberwachung."
-#: src/mn-main.c:263
+#: src/mn-main.c:314
msgid "Unable to initialize the GnomeVFS library."
msgstr "Die GnomeVFS-Bibliothek konnte nicht initializiert werden."
-#: src/mn-main.c:285
+#: src/mn-main.c:350
msgid "updating the mail status"
msgstr "Nachrichtenstatus wird aktualisiert"
-#: src/mn-main.c:301
+#: src/mn-main.c:368
msgid "Mail Notification is already running"
msgstr "Die E-Mail-Eingangsüberwachung ist bereits aktiv"
-#: src/mn-main.c:308
+#: src/mn-main.c:375
msgid ""
"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
"Please check your Mail Notification installation."
@@ -866,7 +1024,7 @@ msgstr ""
"finden. Bitte überprüfen Sie Ihre Installation der E-Mail-"
"Eingangsüberwachung."
-#: src/mn-main.c:312
+#: src/mn-main.c:379
msgid ""
"Bonobo was unable to register the automation server. Please check your Mail "
"Notification installation."
@@ -874,185 +1032,253 @@ msgstr ""
"Bonobo konnte den Automatisierungs-Server nicht registrieren.Bitte "
"überprüfen Sie Ihre Installation der E-Mail-Eingangsüberwachung."
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
#, c-format
msgid "error while reading mailbox: %s"
msgstr "Postfach konnte nicht neu geladen werden: %s"
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
#, c-format
msgid "unable to open mailbox: %s"
msgstr "Postfach konnte nicht geöffnet werden: %s"
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "Die Antwort »%s« konnte nicht analysiert werden"
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
#, c-format
msgid "error while reading .mh_sequences: %s"
msgstr "Fehler beim lesen der .mh_sequences: %s"
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
#, c-format
msgid "unable to open .mh_sequences: %s"
msgstr ".mh_sequences konnten nicht geöffnet werden: %s"
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
msgid "detecting"
msgstr "ermitteln"
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
msgid "_Hostname:"
msgstr "_Server:"
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
msgid "_Details"
msgstr "_Details"
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
msgid "sta_ndard"
msgstr "Sta_ndard"
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
msgid "_in-band SSL/TLS"
-msgstr ""
+msgstr "_band-internes SSL/TLS"
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
msgid "SSL/TLS on sepa_rate port"
-msgstr ""
+msgstr "SSL/TLS über e_xtra Port"
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
msgid "The hostname or IP address of the POP3 server"
msgstr "Der Name oder die IP-Adresse des POP3-Servers"
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
msgid "Your username on the POP3 server"
msgstr "Ihr Benutzername für diesen POP3-Server"
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
msgid "Your password on the POP3 server"
msgstr "Ihr Passwort für diesen POP3-Server"
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
msgid "The port number of the POP3 server"
msgstr "Die Port-Nummer des POP3-Servers"
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
msgid "invalid arguments for the LOGIN-DELAY capability"
msgstr "Ungültige Argumente für die Anmeldeverzögerung"
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "Unbekannter Server-Fehler"
+
+#: src/mn-pop3-mailbox.gob:666
#, c-format
msgid "honouring LOGIN-DELAY, sleeping for %i second"
msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
msgstr[0] ""
-"Anmeldeverzögerung wird berücksichtigt, es wird für eine Sekunde gewartet"
-msgstr[1] ""
-"Anmeldeverzögerung wird berücksichtigt, es wird für %i Sekunden gewartet"
+"Anmeldeverzögerung wird berücksichtigt, es wird für eine Sekunde "
+"gewartetAnmeldeverzögerung wird berücksichtigt, es wird für %i Sekunden "
+"gewartet"
-#: src/mn-pop3-mailbox.gob:682
+#: src/mn-pop3-mailbox.gob:831
msgid "server does not support APOP authentication"
msgstr "Der Server unterstütz eine Authentifizierung per APOP nicht."
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
msgid "falling back to APOP authentication"
msgstr "Es wird auf Authentifizierung mit APOP zurück gegriffen."
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
msgid "falling back to USER/PASS authentication"
msgstr ""
"Es wird auf Authentifizierung per Nutzername und Passwort zurück gegriffen."
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Vollständig"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
msgid "No mailbox selected."
msgstr "Kein Postfach ausgewählt."
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
#, c-format
msgid "%i mailbox selected."
msgid_plural "%i mailboxes selected."
msgstr[0] "Ein Posfach ausgewählt."
msgstr[1] "%i Postfächer ausgewählt."
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
-msgstr "Es ist ein Fehler beim Ausführen des Befehls aufgetreten"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Sie haben neue Nachrichten."
-#: src/mn-shell.gob:205
-#, c-format
-msgid "Unable to execute double-clicked command: %s."
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
msgstr ""
-"Der Befehl für einen Symboldoppelklick konnte nicht ausgeführt werden: %s."
+"Es ist ein Fehler beim Ausführen eines Befehls in der E-Mail-"
+"Eingangsüberwachung aufgetreten."
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Der Befehl für neue E-Mails konnte nicht ausgeführt werden: %s."
+
+#: src/mn-shell.gob:270
msgid "The following mailbox has new mail:\n"
msgid_plural "The following mailboxes have new mail:\n"
msgstr[0] "Dieses Postfach hat neue Nachrichten:\n"
msgstr[1] "Diese Postfächer haben neue Nachrichten:\n"
-#: src/mn-shell.gob:296
+#: src/mn-shell.gob:274
msgid "You have no new mail."
msgstr "Sie haben keine neuen Nachrichten."
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
msgid "The following mailbox reported an error:\n"
msgid_plural "The following mailboxes reported an error:\n"
msgstr[0] "Das folgende Postfach hat einen Fehler ausgegeben:\n"
msgstr[1] "Die folgenden Postfächer haben einen Fehler ausgegeben:\n"
-#: src/mn-shell.gob:304
+#: src/mn-shell.gob:282
msgid "The following mailbox is unsupported:\n"
msgid_plural "The following mailboxes are unsupported:\n"
msgstr[0] "Das folgende Postfach wird nicht unterstützt:\n"
msgstr[1] "Die folgenden Postfächer werden nicht unterstützt:\n"
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr "Sie haben neue Nachrichten."
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr ""
-"Es ist ein Fehler beim Ausführen eines Befehls in der E-Mail-"
-"Eingangsüberwachung aufgetreten."
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr "Der Befehl für neue E-Mails konnte nicht ausgeführt werden: %s."
-
#: src/mn-ssl.c:79
-#, fuzzy
msgid "unknown SSL/TLS error"
-msgstr "Unbekannter Server-Fehler"
+msgstr "Unbekannter SSL/TLS-Fehler"
#: src/mn-stock.c:28
msgid "Select _All"
msgstr "_Alles auswählen"
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
#, c-format
msgid "unable to open folder: %s"
msgstr "Ordner konnte nicht geöffnet werden: %s"
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
#, c-format
msgid "unable to close folder: %s"
msgstr "Ordner konnte nicht geschlossen werden: %s"
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
#, c-format
msgid "error while reading folder: %s"
msgstr "Fehler beim Lesen von Ordner: %s"
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
msgid "System Mailbox"
msgstr "Systempostfach"
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
#, c-format
msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
msgstr ""
"Es wird Ihr Systempostfach (<span weight=\"bold\">%s</span>) verwendet."
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
msgid ""
"The location of your system mailbox could not be detected. Please set the "
"MAIL environment variable."
@@ -1060,47 +1286,61 @@ msgstr ""
"Der Ort Ihres Systempostfachs wurde nicht erkannt. Bitte setzen Sie die "
"Umgebungsvariable »MAIL«."
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
msgid "The reason why the mailbox is unsupported"
msgstr "Der Grund weshalb dieses Postfach nicht unerstützt wird"
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
msgid "unsupported"
msgstr "nicht unterstützt"
-#: src/mn-util.c:199
+#: src/mn-util.c:233
#, c-format
msgid "error loading image: %s"
msgstr "Bild konnte nicht geladen werden: %s"
-#: src/mn-util.c:237
-#, c-format
-msgid "widget %s not found in interface %s"
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
msgstr "Widget %s konnte nicht in Interface %s gefunden werden"
-#: src/mn-util.c:355
+#: src/mn-util.c:385
msgid "received an invalid URI list"
msgstr "Es wurde eine ungültige Adressliste erhalten"
-#: src/mn-util.c:391
+#: src/mn-util.c:421
msgid "received an invalid Mozilla URL"
msgstr "Es wurde eine ungültige Mozilla-Adresse erhalten"
-#: src/mn-util.c:484
+#: src/mn-util.c:514
msgid "Unable to display help"
msgstr "Die Hilfe kann nicht angezeigt werden"
-#: src/mn-util.c:498
+#: src/mn-util.c:528
#, c-format
msgid "Unable to create a thread: %s."
msgstr "Es konnte kein Thread erzeugt werden: %s."
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
msgid "A fatal error has occurred in Mail Notification"
msgstr ""
"Ein schwerwiegender Fehler ist beim Ausführen der E-Mail-Eingangsüberwachung "
"aufgetreten"
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "Es konnte keine Verbindung mit %s hergestellt werden"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
#: ui/mailbox-properties.glade.h:1
msgid "_Mailbox type:"
msgstr "_Art des Postfachs:"
@@ -1114,95 +1354,155 @@ msgid "*"
msgstr "*"
#: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Befehle</span>"
-
-#: ui/properties.glade.h:4
msgid "<span weight=\"bold\">General</span>"
msgstr "<span weight=\"bold\">Allgemein</span>"
-#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
msgstr "<span weight=\"bold\">Postfächer</span>"
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Befehle</span>"
+
#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
msgid "Mail Notification Properties"
msgstr "Einstellung der E-Mail-Eingangsüberwachung"
-#: ui/properties.glade.h:7
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Postfach"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Ort:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
+
+#: ui/properties.glade.h:13
msgid "The amount of time to wait between mail checks"
msgstr "Die Zeit die zwischen zwei Überprüfungen auf neue Nachrichten vergeht"
-#: ui/properties.glade.h:8
+#: ui/properties.glade.h:14
msgid "The command to run when new mail arrives"
msgstr ""
"Geben Sie hier den Befehl ein, der ausgeführt wird sobald eine neue "
"Nachricht eintrifft."
-#: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
msgstr ""
-"Geben Sie hier den Befehl ein, der ausgeführt wird sobald das "
-"Benachrichtigungssymbol doppelt angeklickt wird."
-#: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
-msgstr "Wenn neue Nachricht _eintrifft:"
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
-#: ui/properties.glade.h:11
-msgid "When double-click_ed:"
-msgstr "Wenn _doppelt angeklickt:"
+#: ui/properties.glade.h:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr ""
+"Wenn diese Option gewählt ist, blinkt das Nachrichtensymbol bei Auftreten "
+"eines Fehlers."
-#: ui/properties.glade.h:12
+#: ui/properties.glade.h:18
#, fuzzy
-msgid "Whether the status icon should blink on errors or not"
-msgstr "Legt fest, ob das Bild blinkt oder nicht"
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Legt fest, ob das Postfach neue Nachrichten enthält"
-#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
msgstr ""
"Wenn diese Option ausgewählt ist, können Sie einen Befehl angeben der "
"ausgeführt wird, sobald eine neue Nachricht eintrifft."
-#: ui/properties.glade.h:14
-msgid "Whether to run a command when the icon is double-clicked or not"
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
msgstr ""
"Wenn diese Option ausgewählt ist, können Sie einen Befehl angeben der "
-"ausgeführt wird, sobald das Benachrichtigungssymbol doppelt angeklickt wird."
+"ausgeführt wird, sobald eine neue Nachricht eintrifft."
-#: ui/properties.glade.h:15
-#, fuzzy
+#: ui/properties.glade.h:21
msgid ""
"Whether to start Mail Notification when you log into your GNOME session or "
"not"
msgstr ""
-"Legt fest, ob die E-Mail-Eingangsüberwachnung schon einmal gestartet wurde."
+"Wenn diese Option ausgewählt ist, wird die E-Mail-Eingangsüberwachnung beim "
+"Starten von GNOME ebenfalls gestartet."
-#: ui/properties.glade.h:16
-msgid "_Blink on errors"
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
msgstr ""
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Bei Fehler blinken"
+
+#: ui/properties.glade.h:24
msgid "_Delay between mail checks:"
msgstr "_Nach neuen Nachrichten sehen alle:"
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Einen Befehl ausführen, wenn eine neue Nachricht eintrifft"
+
+#: ui/properties.glade.h:27
msgid "_Start Mail Notification on GNOME login"
+msgstr "_Laden beim Starten von GNOME"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
msgstr ""
-"Ein Benachrichtigungssymbol das erscheint, wenn neue Nachrichten in Ihren "
-"Postfächern liegen."
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:29
msgid "minutes"
msgstr "Minuten"
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
msgid "seconds"
msgstr "Sekunden"
-#: ui/welcome.glade.h:1
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
#, fuzzy
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Postfächer</span>"
+
+#: ui/welcome.glade.h:1
msgid ""
"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
"\n"
@@ -1228,7 +1528,9 @@ msgstr ""
"Eingangsüberwachnung zu einem später Zeitpunkt einzustellen, starten Sie "
"bitte <span weight=\"bold\">Anwendungen</span> → <span weight=\"bold"
"\">Desktop-Einstellungen</span> → <span weight=\"bold\">E-Mail-"
-"Eingangsüberwachnung</span>."
+"Eingangsüberwachnung</span> (auf einigen Systemen auch <span weight=\"bold"
+"\">Anwendungen → Präferenzen → erweiterte Präferenzen → E-Mail-"
+"Eingansüberwachung</span>)."
#: ui/welcome.glade.h:8
msgid "_Configure Mail Notification"
@@ -1238,11 +1540,28 @@ msgstr "Die E-Mail-Eingangsüberwachung anpassen"
msgid "_Skip configuration"
msgstr "Konfiguration über_springen"
-#~ msgid "unable to parse Gmail URI"
-#~ msgstr "Die Gmail-Adresse konnte nicht analysiert werden"
+#~ msgid "Double-clicked command"
+#~ msgstr "Auszuführender Befehl bei Doppelklick"
-#~ msgid "unable to parse IMAP URI"
-#~ msgstr "Die IMAP-Adresse konnte nicht analysiert werden"
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr ""
+#~ "Einen Befehl ausführen, wenn das Nachrichtensymbol doppelt angeklickt wird"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr ""
+#~ "Der Befehl der ausgeführt wird, wenn das Nachrichtensymbol doppelt "
+#~ "angeklickt wird."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Legt fest, ob ein Befehl ausgeführt wird, wenn das Nachrichtensymbol "
+#~ "doppelt angeklickt wird."
+
+#~ msgid "_Run %s"
+#~ msgstr "%s a_usführen"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "_Standard Aktion ausführen"
#~ msgid ""
#~ "As a fallback, they will be checked approximately every %i minute (this "
@@ -1250,14 +1569,31 @@ msgstr "Konfiguration über_springen"
#~ "will be checked approximately every %i minutes (this delay is "
#~ "configurable from the Properties Dialog)."
#~ msgstr ""
-#~ "Als Rücksicherung werden die Postfächer durchschnittlich alle %i Minuten "
-#~ "überprüft (Dieser Wert kann über den Einstellungen-Dialog angepasst "
-#~ "werden).Als Rücksicherung werden die Postfächer durchschnittlich alle %i "
-#~ "Minuten überprüft (Dieser Wert kann über den Einstellungen-Dialog "
-#~ "angepasst werden)."
+#~ "Als Rücksicherung werden diese in etwa jede %i Minute überprüft (Dieser "
+#~ "Wert kann über den Einstellungen-Dialog angepasst werden).Als "
+#~ "Rücksicherung werden diese in etwa alle %i Minuten überprüft (Dieser Wert "
+#~ "kann über den Einstellungen-Dialog angepasst werden)."
+
+#~ msgid "A command error has occurred"
+#~ msgstr "Es ist ein Fehler beim Ausführen des Befehls aufgetreten"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr ""
+#~ "Der Befehl für einen Symboldoppelklick konnte nicht ausgeführt werden: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr ""
+#~ "Geben Sie hier den Befehl ein, der ausgeführt wird sobald das "
+#~ "Benachrichtigungssymbol doppelt angeklickt wird."
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Wenn neue Nachricht _eintrifft:"
-#~ msgid "_SSL"
-#~ msgstr "_SSL"
+#~ msgid "When double-click_ed:"
+#~ msgstr "Wenn _doppelt angeklickt:"
-#~ msgid "unable to parse POP3 URI"
-#~ msgstr "POP3-Adresse konnte nicht analysiert werden"
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr ""
+#~ "Wenn diese Option ausgewählt ist, können Sie einen Befehl angeben der "
+#~ "ausgeführt wird, sobald das Benachrichtigungssymbol doppelt angeklickt "
+#~ "wird."
diff --git a/po/fr.gmo b/po/fr.gmo
Binary files differ.
diff --git a/po/fr.po b/po/fr.po
@@ -8,10 +8,10 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: mail-notification 0.6.2\n"
+"Project-Id-Version: mail-notification 0.7.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
-"PO-Revision-Date: 2004-09-09 01:37+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-10-06 19:26+0200\n"
"Last-Translator: Jean-Yves Lefort <jylefort@brutele.be>\n"
"Language-Team: Jean-Yves Lefort <jylefort@brutele.be>\n"
"MIME-Version: 1.0\n"
@@ -33,8 +33,8 @@ msgstr "Configurer la Notification de Courrier"
#: data/mail-notification-properties.desktop.in.h:2
#: data/mail-notification.desktop.in.h:2
-#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
msgid "Mail Notification"
msgstr "Notification de Courrier"
@@ -43,74 +43,121 @@ msgid "Get notified when new mail arrives"
msgstr "Etre notifié lorsque du nouveau courrier arrive"
#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr "Fermer automatiquement le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:2
msgid "Blink on errors"
msgstr "Clignoter lors d'erreurs"
-#: data/mail-notification.schemas.in.h:2
+#: data/mail-notification.schemas.in.h:3
msgid "Delay between mail checks (minutes part)."
msgstr "Délai entre les vérifications de courrier (partie minutes)."
-#: data/mail-notification.schemas.in.h:3
+#: data/mail-notification.schemas.in.h:4
msgid "Delay between mail checks (seconds part)."
msgstr "Délai entre les vérifications de courrier (partie secondes)."
-#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
-msgstr "Commande associée au double-click"
-
#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+"Ne pas afficher la boîte de dialogue contenant l'erreur de notification "
+"immédiate"
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr "Activer le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:7
msgid "Fingerprints of trusted X509 certificates"
msgstr "Empreintes digitales des certificats X509 de confiance"
-#: data/mail-notification.schemas.in.h:6
+#: data/mail-notification.schemas.in.h:8
msgid "Has already been run"
msgstr "A déjà été exécuté"
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:9
+msgid "Height of mail summary dialog"
+msgstr "Hauteur de la boîte de dialogue contenant l'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:10
msgid "Height of properties dialog"
msgstr "Hauteur de la boîte de dialogue contenant les propriétés"
-#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr "Décalage horizontal du popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr "Position du popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr "Décalage vertical du popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:14
+msgid "Mailbox list"
msgstr "Liste des boîtes aux lettres"
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:15
msgid "Minutes between mail checks"
msgstr "Minutes entre les vérifications de courrier"
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr "Minutes à attendre avant de fermer le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:17
msgid "New mail command"
msgstr "Commande de nouveau message"
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:18
msgid "Run a command when new mail arrives"
msgstr "Exécuter une commande lorsque du nouveau courrier arrive"
-#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
-msgstr "Exécuter une commande lorsque l'îcone est double-cliquée"
-
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:19
msgid "Seconds between mail checks"
msgstr "Secondes entre les vérifications de courrier"
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr "Secondes à attendre avant de fermer le popup d'aperçu du courrier"
+
+#: data/mail-notification.schemas.in.h:21
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+"La quantité de temps à attendre avant de fermer le popup d'aperçu du "
+"courrier (partie minutes)."
+
+#: data/mail-notification.schemas.in.h:22
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+"La quantité de temps à attendre avant de fermer le popup d'aperçu du "
+"courrier (partie secondes)."
+
+#: data/mail-notification.schemas.in.h:23
msgid "The command to run when new mail arrives."
msgstr "La commande à exécuter lorsque du nouveau courrier arrive."
-#: data/mail-notification.schemas.in.h:15
-msgid "The command to run when the icon is double-clicked."
-msgstr "La commande à exécuter lorsque l'îcone est double-cliquée."
+#: data/mail-notification.schemas.in.h:24
+msgid "The height of the mail summary dialog in pixels."
+msgstr ""
+"La hauteur de la boîte de dialogue contenant l'aperçu du courrier en pixels."
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:25
msgid "The height of the properties dialog in pixels."
msgstr "La hauteur de la boîte de dialogue contenant les propriétés en pixels."
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:26
msgid "The list of mailboxes to monitor."
msgstr "La liste des boîtes aux lettres à surveiller."
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
msgid ""
"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
"certificate."
@@ -118,40 +165,87 @@ msgstr ""
"La liste des serveurs SSL/TLS (hôte:port) de confiance auxquels il manque un "
"certificat X509."
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
msgid ""
"The list of trusted X509 certificates, represented by their MD5 fingerprint."
msgstr ""
"La liste des certificats X509 de confiance, représentés par leur empreinte "
"digitale."
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Le nombre de pixels à laisser entre la gauche ou la droite de l'écran et le "
+"popup d'aperçu du courrier."
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+"Le nombre de pixels à laisser entre le haut ou le bas de l'écran et le popup "
+"d'aperçu du courrier."
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+"La position du popup d'aperçu du courrier. Doit etre \"top-left\", \"top-"
+"right\", \"bottom-left\" or \"bottom-right\"."
+
+#: data/mail-notification.schemas.in.h:32
+msgid "The width of the mail summary dialog in pixels."
+msgstr ""
+"La largeur de la boîte de dialogue contenant l'aperçu du courrier en pixels."
+
+#: data/mail-notification.schemas.in.h:33
msgid "The width of the properties dialog in pixels."
msgstr "La largeur de la boîte de dialogue contenant les propriétés en pixels."
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
msgid "Trusted servers list"
msgstr "Liste des serveurs de confiance"
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
msgid "Whether Mail Notification has already been run or not."
msgstr "Si la Notification de Courrier a déjà été exécutée ou pas."
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:36
msgid "Whether the status icon should blink on errors or not."
msgstr "Si l'icône de status doit clignoter lors d'erreurs ou pas."
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr ""
+"Si le popup d'aperçu du courrier doit être automatiquement fermé ou pas."
+
+#: data/mail-notification.schemas.in.h:38
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr ""
+"Si le popup d'aperçu du courrier doit être affiché lorsque du nouveau "
+"courrier arrive ou pas."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+"Si il faut empêcher la boîte de dialogue contenant l'erreur de notification "
+"immédiate de s'afficher ou pas."
+
+#: data/mail-notification.schemas.in.h:40
msgid "Whether to run a command when new mail arrives or not."
msgstr ""
"Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas."
-#: data/mail-notification.schemas.in.h:25
-msgid "Whether to run a command when the icon is double-clicked or not."
-msgstr ""
-"Si une commande doit être exécutée lorsque l'îcone est double-cliquée ou pas."
+#: data/mail-notification.schemas.in.h:41
+msgid "Width of mail summary dialog"
+msgstr "Largeur de la boîte de dialogue contenant l'aperçu du courrier"
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:42
msgid "Width of properties dialog"
msgstr "Largeur de la boîte de dialogue contenant les propriétés"
@@ -167,131 +261,118 @@ msgstr "Orientation"
msgid "The orientation of the tray."
msgstr "L'orientation du plateau."
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
msgid "A Mail Notification Icon"
msgstr "Une Icône de Notification de Courrier"
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
msgid "Jean-Yves Lefort <jylefort@brutele.be>"
msgstr "Jean-Yves Lefort <jylefort@brutele.be>"
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
msgid "<span style=\"italic\">autodetect</span>"
msgstr "<span style=\"italic\">autodétecter</span>"
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
msgid "_Location:"
msgstr "_Emplacement:"
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
msgid "_Browse..."
msgstr "_Parcourir..."
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
msgid "The URI of the mailbox"
msgstr "L'URI de la boîte aux lettres"
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
msgid "Select a File or Folder"
msgstr "Sélectionnez un Fichier ou Dossier"
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
msgid "Whether the image is blinking or not"
msgstr "Si l'image clignote ou pas"
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr "impossible de lire depuis le serveur: %s"
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr "impossible de lire depuis le serveur: EOF"
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr "impossible de décoder les données en utilisant SASL: %s"
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
#, c-format
msgid "resolving %s"
msgstr "résolution de %s en cours"
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
#, c-format
msgid "unable to resolve %s: %s"
msgstr "impossible de résoudre %s: %s"
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
#, c-format
msgid "%s: unsupported address family"
msgstr "%s: famille d'adresse non prise en charge"
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
#, c-format
msgid "%s: unable to create socket: %s"
msgstr "%s: impossible de créer un soquet: %s"
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
#, c-format
msgid "connecting to %s (%s) port %i"
msgstr "connection à %s (%s) port %i en cours"
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
#, c-format
msgid "unable to connect: %s"
msgstr "impossible de se connecter: %s"
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
msgid "connected successfully"
msgstr "connecté avec succès"
#. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
#, c-format
msgid "unable to connect to %s"
msgstr "impossible de se connecter à %s"
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
#, c-format
msgid "unable to initialize the OpenSSL library: %s"
msgstr "impossible d'initialiser la bibliothèque OpenSSL: %s"
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
#, c-format
msgid "unable to create a SSL/TLS object: %s"
msgstr "impossible de créer un objet SSL/TLS: %s"
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
#, c-format
msgid "unable to set the SSL/TLS file descriptor: %s"
msgstr "impossible de spécifier le descripteur de fichier SSL/TLS: %s"
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
#, c-format
msgid "unable to perform the SSL/TLS handshake: %s"
msgstr "impossible d'accomplir la négotiation SSL/TLS: %s"
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
msgid "untrusted server"
msgstr "serveur non fiable"
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
#, c-format
msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
msgstr "une couche SSL/TLS est maintenant active (%s, %s %i-bit)"
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
#, c-format
msgid "%s, fingerprint: %s"
msgstr "%s, empreinte digitale: %s"
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
msgid "missing certificate"
msgstr "certificat manquant"
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
#, c-format
msgid ""
"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -310,99 +391,113 @@ msgstr ""
"vous êtes connecté à \"%s\". Si vous choisissez de vous connecter au "
"serveur, ce message ne sera plus affiché."
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
msgid "Connect to untrusted server?"
msgstr "Se connecter au serveur non fiable?"
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
msgid "Co_nnect"
msgstr "Se co_nnecter"
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
#, c-format
msgid "response \"%s\" is not valid in current context"
msgstr "la réponse \"%s\" n'est pas valable dans le contexte actuel"
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
#, c-format
msgid "unable to parse response \"%s\""
msgstr "impossible d'interpréter la réponse \"%s\""
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "impossible de lire depuis le serveur: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "impossible de lire depuis le serveur: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "impossible de décoder les données en utilisant SASL: %s"
+
+#: src/mn-client-session.c:746
#, c-format
msgid "unable to encode data using SASL: %s"
msgstr "impossible d'encoder les données en utilisant SASL: %s"
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
#, c-format
msgid "unable to write to server: %s"
msgstr "impossible d'écrire vers le serveur: %s"
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
msgid "unable to write to server: EOF"
msgstr "impossible d'écrire vers le serveur: EOF"
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
#, c-format
msgid "unable to encode Base64: %s"
msgstr "impossible d'encoder en Base64: %s"
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
#, c-format
msgid "unable to initialize the SASL library: %s"
msgstr "impossible d'initialiser la bibliothèque SASL: %s"
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
#, c-format
msgid "unable to retrieve local address of socket: %s"
msgstr "impossible d'obtenir l'adresse locale du soquet: %s"
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
#, c-format
msgid "unable to retrieve remote address of socket: %s"
msgstr "impossible d'obtenir l'adresse distante du soquet: %s"
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
#, c-format
msgid "warning: unable to set SASL security properties: %s"
msgstr ""
"avertissement: impossible de spécifier les propriétés de sécurité SASL: %s"
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
msgid ""
"unable to start SASL authentication: SASL asked for something we did not know"
msgstr ""
"impossible de démarrer l'authentification SASL: SASL a demandé quelque chose "
"que nous ne connaissions pas"
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
#, c-format
msgid "unable to start SASL authentication: %s"
msgstr "impossible de démarrer l'authentification SASL: %s"
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
#, c-format
msgid "unable to create a SASL connection: %s"
msgstr "impossible de créer une connection SASL: %s"
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
msgid "SASL asked for something we did not know, aborting SASL authentication"
msgstr ""
"SASL a demandé quelque chose que nous ne connaissions pas, annulation de "
"l'authentification SASL"
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
#, c-format
msgid "%s, aborting SASL authentication"
msgstr "%s, annulation de l'authentification SASL"
#. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
#, c-format
msgid "unable to decode Base64 input from server: %s"
msgstr "impossible de décoder l'entrée Base64 du serveur: %s"
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
msgid ""
"the server sent a SASL challenge, but there was a pending initial SASL "
"client response"
@@ -410,7 +505,7 @@ msgstr ""
"le serveur a envoyé un défi SASL, mais il y avait une réponse client SASL "
"initiale en attente"
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
msgid ""
"the server did not send a SASL challenge, but there was no pending initial "
"SASL client response"
@@ -418,136 +513,188 @@ msgstr ""
"le serveur n'a pas envoyé de défi SASL, mais il n'y avait pas de réponse "
"client SASL initiale en attente"
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
#, c-format
msgid "a SASL security layer of strength factor %i is now active"
msgstr ""
"une couche de sécurité SASL de facteur de force %i est maintenant active"
#. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1028
+#: src/mn-client-session.c:1117
#, c-format
msgid "unable to get SASL_MAXOUTBUF property: %s"
msgstr "impossible d'obtenir la propriété SASL_MAXOUTBUF: %s"
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
#, c-format
msgid "warning: unable to get SASL_SSF property: %s"
msgstr "avertissement: impossible d'obtenir la propriété SASL_SSF: %s"
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
#, c-format
msgid "recursively unsetting %s"
msgstr "en train de supprimer récursivement %s"
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
msgid "syncing the GConf database"
msgstr "en train de synchroniser la base de données GConf"
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
msgid "completed"
msgstr "terminé"
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
msgid "Your Gmail username"
msgstr "Votre nom d'utilisateur Gmail"
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
msgid "Your Gmail password"
msgstr "Votre mot de passe Gmail"
-#: src/mn-gmail-mailbox.gob:220
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr "libsoup n'a pas été compilé avec le support SSL/TLS"
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "impossible d'interpréter l'URI \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
msgid "logging in"
msgstr "ouverture de session en cours"
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "l'ouverture de session a échoué"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
#, c-format
msgid "unable to transfer data: %s"
msgstr "impossible de transférer des données: %s"
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
-msgid "login failed"
-msgstr "l'ouverture de session a échoué"
-
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:409
msgid "successfully logged in"
msgstr "ouverture de session effectuée avec succès"
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
msgid "searching for unread mail"
msgstr "recherche du courrier non lu"
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+msgid "unable to search for unread mail"
+msgstr "impossible de rechercher le courrier non lu"
+
+#: src/mn-gmail-mailbox.gob:604
msgid "unable to parse Gmail data"
msgstr "impossible d'interpréter les données Gmail"
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, c-format
+msgid "unable to read %s: %s"
+msgstr "impossible de lire %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr "impossible d'écrire vers %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr "impossible de chercher dans %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "impossible de dire la position de %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, c-format
+msgid "unable to close %s: %s"
+msgstr "impossible de fermer %s: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
msgid "Mailbox:"
msgstr "Boîte aux lettres:"
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
msgid "in_box"
msgstr "_boîte de réception"
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
msgid "oth_er:"
msgstr "autr_e:"
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
msgid "The hostname or IP address of the IMAP server"
msgstr "Le nom d'hôte ou adresse IP du serveur IMAP"
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
msgid "Your username on the IMAP server"
msgstr "Votre nom d'utilisateur sur le serveur IMAP"
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
msgid "Your password on the IMAP server"
msgstr "Votre mot de passe sur le serveur IMAP"
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
msgid "The port number of the IMAP server"
msgstr "Le numéro de port du serveur IMAP"
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
msgid "The mailbox name"
msgstr "Le nom de la boîte aux lettres"
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
msgid "SSL/TLS support has not been compiled in"
msgstr "le support SSL/TLS n'a pas été inclus lors de la compilation"
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
msgid "server did not send capabilities"
msgstr "le serveur n'a pas envoyé ses possibilités"
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
msgstr ""
"le serveur a annoncé LOGINDISABLED, pas d'utilisation de l'authentification "
"LOGIN"
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
msgid "unable to login"
msgstr "impossible d'ouvrir la session"
#. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+msgid "server did not send search results"
+msgstr "le serveur n'a pas envoyé les résultats de la recherche"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+msgid "server did not send all the messages we requested"
+msgstr "le serveur n'a pas envoyé tous les messages que nous avons demandé"
+
+#: src/mn-imap-mailbox.gob:570
+msgid "unable to fetch message"
+msgstr "impossible d'obtenir le message"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
msgid "server did not send status"
msgstr "le serveur n'a pas envoyé de status"
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
msgid "unknown server error"
msgstr "erreur serveur inconnue"
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
msgid "server does not support in-band SSL/TLS"
msgstr "le serveur ne supporte pas le mode SSL/TLS interne"
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
msgid ""
"a SASL authentication mechanism was selected but SASL support has not been "
"compiled in"
@@ -555,41 +702,32 @@ msgstr ""
"un mécanisme d'authentification SASL a été sélectionné mais le support SASL "
"n'a pas été inclus lors de la compilation"
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
#, c-format
msgid "unknown authentication mechanism \"%s\""
msgstr "mécanisme d'authentification inconnu \"%s\""
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
msgid "falling back to IMAP LOGIN authentication"
msgstr "rétrogradation vers l'authentification IMAP LOGIN"
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
msgid "authentication failed"
msgstr "l'authentification a échoué"
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
msgid "_Update"
msgstr "_Mettre à Jour"
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
msgid "R_emove From Notification Area"
msgstr "_Enlever de l'Aire de Notification"
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr "_Exécuter %s"
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr "_Exécuter l'Action par Défaut"
-
#: src/mn-mailbox-properties-dialog.c:109
msgid "Add a Mailbox"
msgstr "Ajouter une Boîte aux Lettres"
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
#, c-format
msgid "%s Properties"
msgstr "Propriétés de %s"
@@ -638,56 +776,61 @@ msgstr "Complet"
msgid "Whether the properties are completely filled or not"
msgstr "Si les propriétés sont complètement remplies ou pas"
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
msgid "Mailbox"
msgstr "Boîte aux lettres"
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
msgid "Format"
msgstr "Format"
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "Unable to add mailbox"
msgstr "Impossible d'ajouter la boîte aux lettres"
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "The mailbox is already in the list."
msgstr "La boîte aux lettres est déjà dans la liste."
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
msgid "The mailbox URI"
msgstr "L'URI de la boîte aux lettres"
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
msgid "The mailbox human-readable name"
msgstr "Le nom, lisible par un humain, de la boîte aux lettres"
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
msgid "Whether the mailbox has to be manually checked or not"
msgstr "Si la boîte aux lettres doit être vérifiée manuellement ou pas"
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
msgid "Whether the mailbox has new mail or not"
msgstr "Si la boîte aux lettres a du nouveau courrier ou pas"
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr "La liste des objets MNMessage neufs et non lus"
+
+#: src/mn-mailbox.gob:212
msgid "The mailbox error, if any"
msgstr "L'erreur de la boîte aux lettres si il y en a une"
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
msgid "does not exist"
msgstr "n'existe pas"
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
msgid "unknown format"
msgstr "format inconnu"
-#: src/mn-mailbox.gob:355
+#: src/mn-mailbox.gob:408
#, c-format
-msgid "unable to monitor %s: %s"
-msgstr "impossible de surveiller %s: %s"
+msgid "unable to enable immediate notification for %s: %s"
+msgstr "impossible d'activer la notification immédiate pour %s: %s"
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
#, c-format
msgid ""
"As a fallback, they will be checked every %i second (this delay is "
@@ -702,7 +845,7 @@ msgstr[1] ""
"Comme solution de secours, elles seront vérifiées toutes les %i secondes (ce "
"délai est configurable depuis les Propriétés)."
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
#, c-format
msgid ""
"As a fallback, they will be checked every %i minute (this delay is "
@@ -717,7 +860,7 @@ msgstr[1] ""
"Comme solution de secours, elles seront vérifiées toutes les %i minutes (ce "
"délai est configurable depuis les Propriétés)."
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
#, c-format
msgid ""
"As a fallback, they will be checked approximately every %i minute (this "
@@ -732,11 +875,11 @@ msgstr[1] ""
"Comme solution de secours, elles seront vérifiées approximativement toutes "
"les %i minutes (ce délai est configurable depuis les Propriétés)."
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
msgid "A monitoring error has occurred"
msgstr "Une erreur de surveillance s'est produite"
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
#, c-format
msgid ""
"Mail Notification was unable to enable immediate notification for one or "
@@ -745,76 +888,89 @@ msgstr ""
"La Notification de Courrier n'a pas été en mesure d'activer la notification "
"immédiate pour une ou plusieures boîtes aux lettres. %s"
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+"Si une ou plusieurs boîtes aux lettres doivent être vérifiées explicitement"
+
+#: src/mn-mailboxes.gob:266
#, c-format
msgid "%s is unsupported: %s"
msgstr "%s n'est pas pris en charge: %s"
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has new mail"
msgstr "%s a du nouveau courrier"
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has no new mail"
msgstr "%s n'a pas de nouveau courrier"
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
#, c-format
msgid "%s reported an error: %s"
msgstr "%s a indiqué une erreur: %s"
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
#, c-format
msgid "unable to open folder \"new\": %s"
msgstr "impossible d'ouvrir le dossier \"new\": %s"
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
#, c-format
msgid "unable to close folder \"new\": %s"
msgstr "impossible de fermer le dossier \"new\": %s"
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
#, c-format
msgid "error while reading folder \"new\": %s"
msgstr "erreur lors de la lecture du dossier \"new\": %s"
-#: src/mn-main.c:85
+#: src/mn-main.c:97
#, c-format
msgid "Compiled-in mailbox backends: %s\n"
msgstr "Prises en charge de boîtes aux lettres disponibles: %s\n"
-#: src/mn-main.c:103
+#: src/mn-main.c:114
#, c-format
msgid "Compiled-in features: %s\n"
msgstr "Fonctionnalités disponibles: %s\n"
-#: src/mn-main.c:133
+#: src/mn-main.c:166
msgid "Enable informational output"
msgstr "Activer la sortie informationelle"
-#: src/mn-main.c:142
+#: src/mn-main.c:175
msgid "List compiled-in features and exit"
msgstr "Afficher les fonctionnalités disponibles et quitter"
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+msgid "Display the mail summary dialog"
+msgstr "Afficher la boîte de dialogue contenant l'aperçu du courrier"
+
+#: src/mn-main.c:193
msgid "Display the properties dialog"
msgstr "Afficher la boîte de dialogue contenant les propriétés"
-#: src/mn-main.c:160
+#: src/mn-main.c:202
msgid "Display the about dialog"
msgstr "Afficher la boîte de dialogue \"à propos\""
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr "Fermer le popup d'aperçu du courrier"
+
+#: src/mn-main.c:220
msgid "Update the mail status"
msgstr "Mettre à jour le status du courrier"
-#: src/mn-main.c:178
+#: src/mn-main.c:229
msgid "Report the mail status"
msgstr "Rapporter le status du courrier"
-#: src/mn-main.c:187
+#: src/mn-main.c:238
msgid "Unset obsolete GConf configuration and exit"
msgstr "Supprimer la configuration GConf obsolète et quitter"
@@ -822,11 +978,11 @@ msgstr "Supprimer la configuration GConf obsolète et quitter"
#. * We can't use mn_error_dialog() because gtk_init() has not been
#. * called yet.
#.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
msgid "multi-threading is not available"
msgstr "le multi-threading n'est pas disponible"
-#: src/mn-main.c:258
+#: src/mn-main.c:309
msgid ""
"Bonobo could not locate the automation object. Please check your Mail "
"Notification installation."
@@ -834,19 +990,19 @@ msgstr ""
"Bonobo n'a pas pu localiser l'objet automation. Veuillez vérifier votre "
"installation de la Notification de Courrier."
-#: src/mn-main.c:263
+#: src/mn-main.c:314
msgid "Unable to initialize the GnomeVFS library."
msgstr "Impossible d'initialiser la bibliothèque GnomeVFS."
-#: src/mn-main.c:285
+#: src/mn-main.c:350
msgid "updating the mail status"
msgstr "mise à jour du status du courrier"
-#: src/mn-main.c:301
+#: src/mn-main.c:368
msgid "Mail Notification is already running"
msgstr "La Notification de Courrier est déjà en cours d'exécution"
-#: src/mn-main.c:308
+#: src/mn-main.c:375
msgid ""
"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
"Please check your Mail Notification installation."
@@ -854,7 +1010,7 @@ msgstr ""
"Bonobo n'a pas pu localiser le fichier GNOME_MailNotification_Automation."
"server. Veuillez vérifier votre installation de la Notification de Courrier."
-#: src/mn-main.c:312
+#: src/mn-main.c:379
msgid ""
"Bonobo was unable to register the automation server. Please check your Mail "
"Notification installation."
@@ -862,147 +1018,209 @@ msgstr ""
"Bonobo n'a pas été en mesure d'inscrire le serveur d'automation. Veuillez "
"vérifier votre installation de la Notification de Courrier."
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
#, c-format
msgid "error while reading mailbox: %s"
msgstr "erreur lors de la lecture de la boîte aux lettres: %s"
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
#, c-format
msgid "unable to open mailbox: %s"
msgstr "impossible d'ouvrir la boîte aux lettres: %s"
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr "Message non lisible"
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr "De"
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr "Sujet"
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr "Envoyé"
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] "il y a %i seconde"
+msgstr[1] "il y a %i secondes"
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] "il y a %i minute"
+msgstr[1] "il y a %i minutes"
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] "il y a %i heure"
+msgstr[1] "il y a %i heures"
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] "il y a %i jour"
+msgstr[1] "il y a %i jours"
+
+#: src/mn-message-mime.c:105
+msgid "unable to parse MIME message"
+msgstr "impossible d'interpréter le message MIME"
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: src/mn-mh-mailbox.gob:184
#, c-format
msgid "error while reading .mh_sequences: %s"
msgstr "erreur lors de la lecture de .mh_sequences: %s"
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
#, c-format
msgid "unable to open .mh_sequences: %s"
msgstr "impossible d'ouvrir .mh_sequences: %s"
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
msgid "detecting"
msgstr "en cours de détection"
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
msgid "_Hostname:"
msgstr "Nom d'_hôte:"
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
msgid "_Details"
msgstr "_Détails"
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
msgid "sta_ndard"
msgstr "sta_ndard"
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
msgid "_in-band SSL/TLS"
msgstr "SSL/TLS _interne"
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
msgid "SSL/TLS on sepa_rate port"
msgstr "SSL/TLS sur port sépa_ré"
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
msgid "The hostname or IP address of the POP3 server"
msgstr "Le nom d'hôte ou adresse IP du serveur POP3"
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
msgid "Your username on the POP3 server"
msgstr "Votre nom d'utilisateur sur le serveur POP3"
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
msgid "Your password on the POP3 server"
msgstr "Votre mot de passe sur le serveur POP3"
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
msgid "The port number of the POP3 server"
msgstr "Le numéro de port du serveur POP3"
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
msgid "invalid arguments for the LOGIN-DELAY capability"
msgstr "arguments invalides pour la possibilité LOGIN-DELAY"
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+msgid "unknown error"
+msgstr "erreur inconnue"
+
+#: src/mn-pop3-mailbox.gob:666
#, c-format
msgid "honouring LOGIN-DELAY, sleeping for %i second"
msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "attente de %i seconde afin d'obéir à LOGIN-DELAY"
+msgstr[1] "attente de %i secondes afin d'obéir à LOGIN-DELAY"
-#: src/mn-pop3-mailbox.gob:682
+#: src/mn-pop3-mailbox.gob:831
msgid "server does not support APOP authentication"
msgstr "le serveur ne supporte pas l'authentification APOP"
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
msgid "falling back to APOP authentication"
msgstr "rétrogradation vers l'authentification APOP"
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
msgid "falling back to USER/PASS authentication"
msgstr "rétrogradation vers l'authentification USER/PASS"
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+msgid "top left"
+msgstr "en haut à gauche"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr "en haut à droite"
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr "en bas à gauche"
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr "en bas à droite"
+
+#: src/mn-properties.c:240
msgid "No mailbox selected."
msgstr "Pas de boîte aux lettres sélectionnée."
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
#, c-format
msgid "%i mailbox selected."
msgid_plural "%i mailboxes selected."
msgstr[0] "%i boîte aux lettres sélectionnée"
msgstr[1] "%i boîtes aux lettres sélectionnées"
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
-msgstr "Une erreur de commande s'est produite"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Vous avez du nouveau courrier."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Une erreur de commande s'est produite dans la Notification de Courrier"
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:97
#, c-format
-msgid "Unable to execute double-clicked command: %s."
+msgid "Unable to execute new mail command: %s."
msgstr ""
-"Impossible d'exécuter la commande associée au double-click sur l'icône: %s."
+"Impossible d'exécuter la commande associée à l'arrivée de nouveau courrier: %"
+"s"
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
msgid "The following mailbox has new mail:\n"
msgid_plural "The following mailboxes have new mail:\n"
msgstr[0] "La boîte aux lettres suivante a du nouveau courrier:\n"
msgstr[1] "Les boîtes aux lettres suivantes ont du nouveau courrier:\n"
-#: src/mn-shell.gob:296
+#: src/mn-shell.gob:274
msgid "You have no new mail."
msgstr "Vous n'avez pas de nouveau courrier."
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
msgid "The following mailbox reported an error:\n"
msgid_plural "The following mailboxes reported an error:\n"
msgstr[0] "La boîte aux lettres suivante a indiqué une erreur:\n"
msgstr[1] "Les boîtes aux lettres suivantes ont indiqué une erreur:\n"
-#: src/mn-shell.gob:304
+#: src/mn-shell.gob:282
msgid "The following mailbox is unsupported:\n"
msgid_plural "The following mailboxes are unsupported:\n"
msgstr[0] "La boîte aux lettres suivante n'est pas prise en charge:\n"
msgstr[1] "Les boîtes aux lettres suivantes ne sont pas prises en charge:\n"
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr "Vous avez du nouveau courrier."
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr "Une erreur de commande s'est produite dans la Notification de Courrier"
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr ""
-"Impossible d'exécuter la commande associée à l'arrivée de nouveau courrier: %"
-"s"
-
#: src/mn-ssl.c:79
msgid "unknown SSL/TLS error"
msgstr "erreur SSL/TLS inconnue"
@@ -1011,33 +1229,37 @@ msgstr "erreur SSL/TLS inconnue"
msgid "Select _All"
msgstr "Sélectionner _Tout"
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr "_Aperçu du Courrier"
+
+#: src/mn-sylpheed-mailbox.gob:122
#, c-format
msgid "unable to open folder: %s"
msgstr "impossible d'ouvrir le dossier: %s"
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
#, c-format
msgid "unable to close folder: %s"
msgstr "impossible de fermer le dossier: %s"
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
#, c-format
msgid "error while reading folder: %s"
msgstr "erreur lors de la lecture du dossier: %s"
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
msgid "System Mailbox"
msgstr "Boîte aux Lettres Système"
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
#, c-format
msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
msgstr ""
"Votre boîte aux lettres système (<span weight=\"bold\">%s</span>) sera "
"utilisée."
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
msgid ""
"The location of your system mailbox could not be detected. Please set the "
"MAIL environment variable."
@@ -1045,45 +1267,59 @@ msgstr ""
"L'emplacement de votre boîte aux lettres système n'a pu être détecté. "
"Veuillez spécifier la variable d'environnement MAIL."
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
msgid "The reason why the mailbox is unsupported"
msgstr "La raison pour laquelle la boîte aux lettres n'est pas prise en charge"
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
msgid "unsupported"
msgstr "non pris en charge"
-#: src/mn-util.c:199
+#: src/mn-util.c:233
#, c-format
msgid "error loading image: %s"
msgstr "erreur de chargement d'image: %s"
-#: src/mn-util.c:237
+#: src/mn-util.c:271
#, c-format
-msgid "widget %s not found in interface %s"
-msgstr "élément %s non trouvé dans interface %s"
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "élément \"%s\" non trouvé dans interface \"%s\""
-#: src/mn-util.c:355
+#: src/mn-util.c:385
msgid "received an invalid URI list"
msgstr "une liste d'URI invalide a été reçue"
-#: src/mn-util.c:391
+#: src/mn-util.c:421
msgid "received an invalid Mozilla URL"
msgstr "une URL Mozilla invalide a été reçue"
-#: src/mn-util.c:484
+#: src/mn-util.c:514
msgid "Unable to display help"
msgstr "Impossible d'afficher l'aide"
-#: src/mn-util.c:498
+#: src/mn-util.c:528
#, c-format
msgid "Unable to create a thread: %s."
msgstr "Impossible de créer un thread: %s."
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr "_Ne plus afficher ce message"
+
+#: src/mn-util.c:789
msgid "A fatal error has occurred in Mail Notification"
msgstr "Une erreur fatale s'est produite dans la Notification de Courrier"
+#: src/mn-util.c:804
+#, c-format
+msgid "unable to get current time: %s"
+msgstr "impossible d'obtenir l'heure courante: %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr "spécification de signal \"%s\" invalide"
+
#: ui/mailbox-properties.glade.h:1
msgid "_Mailbox type:"
msgstr "_Type de boîte aux lettres:"
@@ -1097,56 +1333,91 @@ msgid "*"
msgstr "*"
#: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Commandes</span>"
-
-#: ui/properties.glade.h:4
msgid "<span weight=\"bold\">General</span>"
msgstr "<span weight=\"bold\">Général</span>"
+#: ui/properties.glade.h:4
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Liste des Boîtes aux Lettres</span>"
+
#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
-msgstr "<span weight=\"bold\">Boîtes aux lettres</span>"
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Position</span>"
#: ui/properties.glade.h:6
-msgid "Mail Notification Properties"
-msgstr "Propriétés de la Notification de Courrier"
+msgid "General"
+msgstr "Général"
#: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
-msgstr "La quantité de temps à attendre entre les vérifications de courrier"
+msgid "Hori_zontal offset:"
+msgstr "Décalage hori_zontal:"
#: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
-msgstr "La commande à exécuter lorsque du nouveau courrier arrive"
+msgid "Mail Notification Properties"
+msgstr "Propriétés de la Notification de Courrier"
#: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
-msgstr "La commande à exécuter lorsque l'îcone est double-cliquée"
+msgid "Mail Summary Popup"
+msgstr "Popup d'Aperçu du Courrier"
#: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
-msgstr "Lorsque du _nouveau courrier arrive:"
+msgid "Mailboxes"
+msgstr "Boîtes aux Lettres"
#: ui/properties.glade.h:11
-msgid "When double-click_ed:"
-msgstr "Lorsque l'îcone est double-cliqué_e:"
+msgid "P_osition:"
+msgstr "P_osition:"
#: ui/properties.glade.h:12
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr ""
+"La quantité de temps à attendre avant de fermer le popup d'aperçu du courrier"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "La quantité de temps à attendre entre les vérifications de courrier"
+
+#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr "La commande à exécuter lorsque du nouveau courrier arrive"
+
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+"Le nombre de pixels à laisser entre la gauche ou la droite de l'écran et le "
+"popup d'aperçu du courrier"
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+"Le nombre de pixels à laisser entre le haut ou le bas de l'écran et le popup "
+"d'aperçu du courrier"
+
+#: ui/properties.glade.h:17
msgid "Whether the status icon should blink on errors or not"
msgstr "Si l'icône de status doit clignoter lors d'erreurs ou pas"
-#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+#: ui/properties.glade.h:18
+msgid "Whether to automatically close the mail summary popup or not"
msgstr ""
-"Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas"
+"Si le popup d'aperçu du courrier doit être automatiquement fermé ou pas"
-#: ui/properties.glade.h:14
-msgid "Whether to run a command when the icon is double-clicked or not"
+#: ui/properties.glade.h:19
+msgid "Whether to display the mail summary popup when new mail arrives or not"
msgstr ""
-"Si une commande doit être exécutée lorsque l'îcone est double-cliquée ou pas"
+"Si le popup d'aperçu du courrier doit être affiché lorsque du nouveau "
+"courrier arrive ou pas"
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr ""
+"Si une commande doit être exécutée lorsque du nouveau courrier arrive ou pas"
+
+#: ui/properties.glade.h:21
msgid ""
"Whether to start Mail Notification when you log into your GNOME session or "
"not"
@@ -1154,27 +1425,55 @@ msgstr ""
"Si la Notification de Courrier doit être démarrée lorsque vous ouvrez votre "
"session GNOME ou pas"
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr "_Fermer automatiquement après:"
+
+#: ui/properties.glade.h:23
msgid "_Blink on errors"
msgstr "_Clignoter lors d'erreurs"
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
msgid "_Delay between mail checks:"
msgstr "_Délai entre les vérifications de courrier:"
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr "_Activer le popup d'aperçu du courrier"
+
+#: ui/properties.glade.h:26
+msgid "_Run a command when new mail arrives:"
+msgstr "_Exécuter une commande lorsque du nouveau courrier arrive:"
+
+#: ui/properties.glade.h:27
msgid "_Start Mail Notification on GNOME login"
msgstr ""
"_Démarrer la Notification de Courrier lors de l'ouverture de session GNOME"
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr "Décalage _vertical:"
+
+#: ui/properties.glade.h:29
msgid "minutes"
msgstr "minutes"
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr "pixels"
+
+#: ui/properties.glade.h:31
msgid "seconds"
msgstr "secondes"
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr "Aperçu du Courrier"
+
+#: ui/summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span size=\"larger\" weight=\"bold\">Aperçu du Courrier</span>"
+
#: ui/welcome.glade.h:1
msgid ""
"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
diff --git a/po/mail-notification.pot b/po/mail-notification.pot
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -31,8 +31,8 @@ msgstr ""
#: data/mail-notification-properties.desktop.in.h:2
#: data/mail-notification.desktop.in.h:2
-#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
msgid "Mail Notification"
msgstr ""
@@ -41,109 +41,185 @@ msgid "Get notified when new mail arrives"
msgstr ""
#: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:2
-msgid "Delay between mail checks (minutes part)."
+msgid "Blink on errors"
msgstr ""
#: data/mail-notification.schemas.in.h:3
-msgid "Delay between mail checks (seconds part)."
+msgid "Delay between mail checks (minutes part)."
msgstr ""
#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
+msgid "Delay between mail checks (seconds part)."
msgstr ""
#: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:6
-msgid "Has already been run"
+msgid "Enable mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:7
-msgid "Height of properties dialog"
+msgid "Fingerprints of trusted X509 certificates"
msgstr ""
#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+msgid "Has already been run"
msgstr ""
#: data/mail-notification.schemas.in.h:9
-msgid "Minutes between mail checks"
+msgid "Height of mail summary dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:10
-msgid "New mail command"
+msgid "Height of properties dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:11
-msgid "Run a command when new mail arrives"
+msgid "Mail summary popup horizontal offset"
msgstr ""
#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
+msgid "Mail summary popup position"
msgstr ""
#: data/mail-notification.schemas.in.h:13
-msgid "Seconds between mail checks"
+msgid "Mail summary popup vertical offset"
msgstr ""
#: data/mail-notification.schemas.in.h:14
-msgid "The command to run when new mail arrives."
+msgid "Mailbox list"
msgstr ""
#: data/mail-notification.schemas.in.h:15
-msgid "The command to run when the icon is double-clicked."
+msgid "Minutes between mail checks"
msgstr ""
#: data/mail-notification.schemas.in.h:16
-msgid "The height of the properties dialog in pixels."
+msgid "Minutes to wait before closing the mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:17
-msgid "The list of mailboxes to monitor."
+msgid "New mail command"
msgstr ""
#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:22
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:24
+msgid "The height of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:27
msgid ""
"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
"certificate."
msgstr ""
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
msgid ""
"The list of trusted X509 certificates, represented by their MD5 fingerprint."
msgstr ""
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+msgid "The width of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:33
msgid "The width of the properties dialog in pixels."
msgstr ""
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
msgid "Trusted servers list"
msgstr ""
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
msgid "Whether Mail Notification has already been run or not."
msgstr ""
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:36
msgid "Whether the status icon should blink on errors or not."
msgstr ""
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:38
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
msgid "Whether to run a command when new mail arrives or not."
msgstr ""
-#: data/mail-notification.schemas.in.h:25
-msgid "Whether to run a command when the icon is double-clicked or not."
+#: data/mail-notification.schemas.in.h:41
+msgid "Width of mail summary dialog"
msgstr ""
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:42
msgid "Width of properties dialog"
msgstr ""
@@ -159,131 +235,118 @@ msgstr ""
msgid "The orientation of the tray."
msgstr ""
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
msgid "A Mail Notification Icon"
msgstr ""
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
msgid "Jean-Yves Lefort <jylefort@brutele.be>"
msgstr ""
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
msgid "<span style=\"italic\">autodetect</span>"
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
msgid "_Location:"
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
msgid "_Browse..."
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
msgid "The URI of the mailbox"
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
msgid "Select a File or Folder"
msgstr ""
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
msgid "Whether the image is blinking or not"
msgstr ""
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr ""
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr ""
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr ""
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
#, c-format
msgid "resolving %s"
msgstr ""
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
#, c-format
msgid "unable to resolve %s: %s"
msgstr ""
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
#, c-format
msgid "%s: unsupported address family"
msgstr ""
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
#, c-format
msgid "%s: unable to create socket: %s"
msgstr ""
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
#, c-format
msgid "connecting to %s (%s) port %i"
msgstr ""
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
#, c-format
msgid "unable to connect: %s"
msgstr ""
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
msgid "connected successfully"
msgstr ""
#. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
#, c-format
msgid "unable to connect to %s"
msgstr ""
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
#, c-format
msgid "unable to initialize the OpenSSL library: %s"
msgstr ""
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
#, c-format
msgid "unable to create a SSL/TLS object: %s"
msgstr ""
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
#, c-format
msgid "unable to set the SSL/TLS file descriptor: %s"
msgstr ""
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
#, c-format
msgid "unable to perform the SSL/TLS handshake: %s"
msgstr ""
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
msgid "untrusted server"
msgstr ""
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
#, c-format
msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
msgstr ""
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
#, c-format
msgid "%s, fingerprint: %s"
msgstr ""
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
msgid "missing certificate"
msgstr ""
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
#, c-format
msgid ""
"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -295,272 +358,329 @@ msgid ""
"shown again."
msgstr ""
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
msgid "Connect to untrusted server?"
msgstr ""
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
msgid "Co_nnect"
msgstr ""
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
#, c-format
msgid "response \"%s\" is not valid in current context"
msgstr ""
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
#, c-format
msgid "unable to parse response \"%s\""
msgstr ""
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr ""
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr ""
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:746
#, c-format
msgid "unable to encode data using SASL: %s"
msgstr ""
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
#, c-format
msgid "unable to write to server: %s"
msgstr ""
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
msgid "unable to write to server: EOF"
msgstr ""
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
#, c-format
msgid "unable to encode Base64: %s"
msgstr ""
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
#, c-format
msgid "unable to initialize the SASL library: %s"
msgstr ""
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
#, c-format
msgid "unable to retrieve local address of socket: %s"
msgstr ""
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
#, c-format
msgid "unable to retrieve remote address of socket: %s"
msgstr ""
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
#, c-format
msgid "warning: unable to set SASL security properties: %s"
msgstr ""
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
msgid ""
"unable to start SASL authentication: SASL asked for something we did not know"
msgstr ""
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
#, c-format
msgid "unable to start SASL authentication: %s"
msgstr ""
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
#, c-format
msgid "unable to create a SASL connection: %s"
msgstr ""
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
msgid "SASL asked for something we did not know, aborting SASL authentication"
msgstr ""
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
#, c-format
msgid "%s, aborting SASL authentication"
msgstr ""
#. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
#, c-format
msgid "unable to decode Base64 input from server: %s"
msgstr ""
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
msgid ""
"the server sent a SASL challenge, but there was a pending initial SASL "
"client response"
msgstr ""
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
msgid ""
"the server did not send a SASL challenge, but there was no pending initial "
"SASL client response"
msgstr ""
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
#, c-format
msgid "a SASL security layer of strength factor %i is now active"
msgstr ""
#. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1028
+#: src/mn-client-session.c:1117
#, c-format
msgid "unable to get SASL_MAXOUTBUF property: %s"
msgstr ""
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
#, c-format
msgid "warning: unable to get SASL_SSF property: %s"
msgstr ""
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
#, c-format
msgid "recursively unsetting %s"
msgstr ""
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
msgid "syncing the GConf database"
msgstr ""
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
msgid "completed"
msgstr ""
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
msgid "Your Gmail username"
msgstr ""
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
msgid "Your Gmail password"
msgstr ""
-#: src/mn-gmail-mailbox.gob:220
-msgid "logging in"
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
msgstr ""
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
#, c-format
-msgid "unable to transfer data: %s"
+msgid "unable to parse URI \"%s\""
msgstr ""
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
msgid "login failed"
msgstr ""
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:409
msgid "successfully logged in"
msgstr ""
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
msgid "searching for unread mail"
msgstr ""
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+msgid "unable to search for unread mail"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:604
msgid "unable to parse Gmail data"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, c-format
+msgid "unable to read %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, c-format
+msgid "unable to close %s: %s"
+msgstr ""
+
+#: src/mn-imap-mailbox-properties.gob:94
msgid "Mailbox:"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
msgid "in_box"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
msgid "oth_er:"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
msgid "The hostname or IP address of the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
msgid "Your username on the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
msgid "Your password on the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
msgid "The port number of the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
msgid "The mailbox name"
msgstr ""
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
msgid "SSL/TLS support has not been compiled in"
msgstr ""
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
msgid "server did not send capabilities"
msgstr ""
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
msgstr ""
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
msgid "unable to login"
msgstr ""
#. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+msgid "server did not send search results"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+msgid "server did not send all the messages we requested"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:570
+msgid "unable to fetch message"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
msgid "server did not send status"
msgstr ""
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
msgid "unknown server error"
msgstr ""
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
msgid "server does not support in-band SSL/TLS"
msgstr ""
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
msgid ""
"a SASL authentication mechanism was selected but SASL support has not been "
"compiled in"
msgstr ""
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
#, c-format
msgid "unknown authentication mechanism \"%s\""
msgstr ""
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
msgid "falling back to IMAP LOGIN authentication"
msgstr ""
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
msgid "authentication failed"
msgstr ""
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
msgid "_Update"
msgstr ""
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
msgid "R_emove From Notification Area"
msgstr ""
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr ""
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr ""
-
#: src/mn-mailbox-properties-dialog.c:109
msgid "Add a Mailbox"
msgstr ""
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
#, c-format
msgid "%s Properties"
msgstr ""
@@ -609,56 +729,61 @@ msgstr ""
msgid "Whether the properties are completely filled or not"
msgstr ""
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
msgid "Mailbox"
msgstr ""
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
msgid "Format"
msgstr ""
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "Unable to add mailbox"
msgstr ""
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "The mailbox is already in the list."
msgstr ""
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
msgid "The mailbox URI"
msgstr ""
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
msgid "The mailbox human-readable name"
msgstr ""
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
msgid "Whether the mailbox has to be manually checked or not"
msgstr ""
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
msgid "Whether the mailbox has new mail or not"
msgstr ""
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
msgid "The mailbox error, if any"
msgstr ""
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
msgid "does not exist"
msgstr ""
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
msgid "unknown format"
msgstr ""
-#: src/mn-mailbox.gob:355
+#: src/mn-mailbox.gob:408
#, c-format
-msgid "unable to monitor %s: %s"
+msgid "unable to enable immediate notification for %s: %s"
msgstr ""
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
#, c-format
msgid ""
"As a fallback, they will be checked every %i second (this delay is "
@@ -669,7 +794,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
#, c-format
msgid ""
"As a fallback, they will be checked every %i minute (this delay is "
@@ -680,7 +805,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
#, c-format
msgid ""
"As a fallback, they will be checked approximately every %i minute (this "
@@ -691,87 +816,99 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
msgid "A monitoring error has occurred"
msgstr ""
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
#, c-format
msgid ""
"Mail Notification was unable to enable immediate notification for one or "
"more mailboxes. %s"
msgstr ""
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+
+#: src/mn-mailboxes.gob:266
#, c-format
msgid "%s is unsupported: %s"
msgstr ""
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has new mail"
msgstr ""
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has no new mail"
msgstr ""
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
#, c-format
msgid "%s reported an error: %s"
msgstr ""
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
#, c-format
msgid "unable to open folder \"new\": %s"
msgstr ""
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
#, c-format
msgid "unable to close folder \"new\": %s"
msgstr ""
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
#, c-format
msgid "error while reading folder \"new\": %s"
msgstr ""
-#: src/mn-main.c:85
+#: src/mn-main.c:97
#, c-format
msgid "Compiled-in mailbox backends: %s\n"
msgstr ""
-#: src/mn-main.c:103
+#: src/mn-main.c:114
#, c-format
msgid "Compiled-in features: %s\n"
msgstr ""
-#: src/mn-main.c:133
+#: src/mn-main.c:166
msgid "Enable informational output"
msgstr ""
-#: src/mn-main.c:142
+#: src/mn-main.c:175
msgid "List compiled-in features and exit"
msgstr ""
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+msgid "Display the mail summary dialog"
+msgstr ""
+
+#: src/mn-main.c:193
msgid "Display the properties dialog"
msgstr ""
-#: src/mn-main.c:160
+#: src/mn-main.c:202
msgid "Display the about dialog"
msgstr ""
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
msgid "Update the mail status"
msgstr ""
-#: src/mn-main.c:178
+#: src/mn-main.c:229
msgid "Report the mail status"
msgstr ""
-#: src/mn-main.c:187
+#: src/mn-main.c:238
msgid "Unset obsolete GConf configuration and exit"
msgstr ""
@@ -779,178 +916,241 @@ msgstr ""
#. * We can't use mn_error_dialog() because gtk_init() has not been
#. * called yet.
#.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
msgid "multi-threading is not available"
msgstr ""
-#: src/mn-main.c:258
+#: src/mn-main.c:309
msgid ""
"Bonobo could not locate the automation object. Please check your Mail "
"Notification installation."
msgstr ""
-#: src/mn-main.c:263
+#: src/mn-main.c:314
msgid "Unable to initialize the GnomeVFS library."
msgstr ""
-#: src/mn-main.c:285
+#: src/mn-main.c:350
msgid "updating the mail status"
msgstr ""
-#: src/mn-main.c:301
+#: src/mn-main.c:368
msgid "Mail Notification is already running"
msgstr ""
-#: src/mn-main.c:308
+#: src/mn-main.c:375
msgid ""
"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
"Please check your Mail Notification installation."
msgstr ""
-#: src/mn-main.c:312
+#: src/mn-main.c:379
msgid ""
"Bonobo was unable to register the automation server. Please check your Mail "
"Notification installation."
msgstr ""
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
#, c-format
msgid "error while reading mailbox: %s"
msgstr ""
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
#, c-format
msgid "unable to open mailbox: %s"
msgstr ""
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+msgid "unable to parse MIME message"
+msgstr ""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
#, c-format
msgid "error while reading .mh_sequences: %s"
msgstr ""
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
#, c-format
msgid "unable to open .mh_sequences: %s"
msgstr ""
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
msgid "detecting"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
msgid "_Hostname:"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
msgid "_Details"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
msgid "sta_ndard"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
msgid "_in-band SSL/TLS"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
msgid "SSL/TLS on sepa_rate port"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
msgid "The hostname or IP address of the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
msgid "Your username on the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
msgid "Your password on the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
msgid "The port number of the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
msgid "invalid arguments for the LOGIN-DELAY capability"
msgstr ""
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+msgid "unknown error"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:666
#, c-format
msgid "honouring LOGIN-DELAY, sleeping for %i second"
msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-pop3-mailbox.gob:682
+#: src/mn-pop3-mailbox.gob:831
msgid "server does not support APOP authentication"
msgstr ""
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
msgid "falling back to APOP authentication"
msgstr ""
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
msgid "falling back to USER/PASS authentication"
msgstr ""
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+msgid "top left"
+msgstr ""
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
msgid "No mailbox selected."
msgstr ""
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
#, c-format
msgid "%i mailbox selected."
msgid_plural "%i mailboxes selected."
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr ""
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
msgstr ""
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:97
#, c-format
-msgid "Unable to execute double-clicked command: %s."
+msgid "Unable to execute new mail command: %s."
msgstr ""
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
msgid "The following mailbox has new mail:\n"
msgid_plural "The following mailboxes have new mail:\n"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:296
+#: src/mn-shell.gob:274
msgid "You have no new mail."
msgstr ""
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
msgid "The following mailbox reported an error:\n"
msgid_plural "The following mailboxes reported an error:\n"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:304
+#: src/mn-shell.gob:282
msgid "The following mailbox is unsupported:\n"
msgid_plural "The following mailboxes are unsupported:\n"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr ""
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr ""
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr ""
-
#: src/mn-ssl.c:79
msgid "unknown SSL/TLS error"
msgstr ""
@@ -959,75 +1159,93 @@ msgstr ""
msgid "Select _All"
msgstr ""
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
#, c-format
msgid "unable to open folder: %s"
msgstr ""
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
#, c-format
msgid "unable to close folder: %s"
msgstr ""
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
#, c-format
msgid "error while reading folder: %s"
msgstr ""
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
msgid "System Mailbox"
msgstr ""
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
#, c-format
msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
msgstr ""
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
msgid ""
"The location of your system mailbox could not be detected. Please set the "
"MAIL environment variable."
msgstr ""
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
msgid "The reason why the mailbox is unsupported"
msgstr ""
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
msgid "unsupported"
msgstr ""
-#: src/mn-util.c:199
+#: src/mn-util.c:233
#, c-format
msgid "error loading image: %s"
msgstr ""
-#: src/mn-util.c:237
+#: src/mn-util.c:271
#, c-format
-msgid "widget %s not found in interface %s"
+msgid "widget \"%s\" not found in interface \"%s\""
msgstr ""
-#: src/mn-util.c:355
+#: src/mn-util.c:385
msgid "received an invalid URI list"
msgstr ""
-#: src/mn-util.c:391
+#: src/mn-util.c:421
msgid "received an invalid Mozilla URL"
msgstr ""
-#: src/mn-util.c:484
+#: src/mn-util.c:514
msgid "Unable to display help"
msgstr ""
-#: src/mn-util.c:498
+#: src/mn-util.c:528
#, c-format
msgid "Unable to create a thread: %s."
msgstr ""
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
msgid "A fatal error has occurred in Mail Notification"
msgstr ""
+#: src/mn-util.c:804
+#, c-format
+msgid "unable to get current time: %s"
+msgstr ""
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
#: ui/mailbox-properties.glade.h:1
msgid "_Mailbox type:"
msgstr ""
@@ -1041,79 +1259,135 @@ msgid "*"
msgstr ""
#: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
+msgid "<span weight=\"bold\">General</span>"
msgstr ""
#: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+msgid "<span weight=\"bold\">Mailbox List</span>"
msgstr ""
#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+msgid "<span weight=\"bold\">Position</span>"
msgstr ""
#: ui/properties.glade.h:6
-msgid "Mail Notification Properties"
+msgid "General"
msgstr ""
#: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
+msgid "Hori_zontal offset:"
msgstr ""
#: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
+msgid "Mail Notification Properties"
msgstr ""
#: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
+msgid "Mail Summary Popup"
msgstr ""
#: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
+msgid "Mailboxes"
msgstr ""
#: ui/properties.glade.h:11
-msgid "When double-click_ed:"
+msgid "P_osition:"
msgstr ""
#: ui/properties.glade.h:12
-msgid "Whether the status icon should blink on errors or not"
+msgid "The amount of time to wait before closing the mail summary popup"
msgstr ""
#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+msgid "The amount of time to wait between mail checks"
msgstr ""
#: ui/properties.glade.h:14
-msgid "Whether to run a command when the icon is double-clicked or not"
+msgid "The command to run when new mail arrives"
msgstr ""
#: ui/properties.glade.h:15
msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr ""
+
+#: ui/properties.glade.h:18
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr ""
+
+#: ui/properties.glade.h:19
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr ""
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr ""
+
+#: ui/properties.glade.h:21
+msgid ""
"Whether to start Mail Notification when you log into your GNOME session or "
"not"
msgstr ""
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
msgid "_Blink on errors"
msgstr ""
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
msgid "_Delay between mail checks:"
msgstr ""
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+msgid "_Run a command when new mail arrives:"
+msgstr ""
+
+#: ui/properties.glade.h:27
msgid "_Start Mail Notification on GNOME login"
msgstr ""
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
msgid "minutes"
msgstr ""
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
msgid "seconds"
msgstr ""
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr ""
+
#: ui/welcome.glade.h:1
msgid ""
"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
diff --git a/po/pt.gmo b/po/pt.gmo
Binary files differ.
diff --git a/po/pt.po b/po/pt.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: mail-notification 0.6.1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
"PO-Revision-Date: 2004-09-07 00:04+0200\n"
"Last-Translator: Duarte Henriques <duarte_henriques@myrealbox.com>\n"
"Language-Team: Duarte Henriques <duarte_henriques@myrealbox.com>\n"
@@ -33,8 +33,8 @@ msgstr "Configurar Notificação de Correio"
#: data/mail-notification-properties.desktop.in.h:2
#: data/mail-notification.desktop.in.h:2
-#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
msgid "Mail Notification"
msgstr "Notificação de Correio"
@@ -43,110 +43,195 @@ msgid "Get notified when new mail arrives"
msgstr "Notificar quando chega novo correio"
#: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:3
msgid "Delay between mail checks (minutes part)."
msgstr "Intervalo entre verificações de correio (minutos)."
-#: data/mail-notification.schemas.in.h:3
+#: data/mail-notification.schemas.in.h:4
msgid "Delay between mail checks (seconds part)."
msgstr "Intervalo entre verificações de correio (segundos)."
-#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
-msgstr "Comando de duplo-clique"
-
#: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:8
msgid "Has already been run"
msgstr "Já foi executado"
-#: data/mail-notification.schemas.in.h:7
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Altura do diálogo de propriedades"
+
+#: data/mail-notification.schemas.in.h:10
msgid "Height of properties dialog"
msgstr "Altura do diálogo de propriedades"
-#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
msgstr "Lista de caixas de correio"
-#: data/mail-notification.schemas.in.h:9
+#: data/mail-notification.schemas.in.h:15
msgid "Minutes between mail checks"
msgstr "Minutos entre verificações de correio"
-#: data/mail-notification.schemas.in.h:10
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
msgid "New mail command"
msgstr "Novo comando de correio"
-#: data/mail-notification.schemas.in.h:11
+#: data/mail-notification.schemas.in.h:18
msgid "Run a command when new mail arrives"
msgstr "Executar um comando quando chega novo correio"
-#: data/mail-notification.schemas.in.h:12
-msgid "Run a command when the icon is double-clicked"
-msgstr "Executar um comando quando fizer duplo-clique no ícone"
-
-#: data/mail-notification.schemas.in.h:13
+#: data/mail-notification.schemas.in.h:19
msgid "Seconds between mail checks"
msgstr "Segundos entre verificações de correio"
-#: data/mail-notification.schemas.in.h:14
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
+
+#: data/mail-notification.schemas.in.h:23
msgid "The command to run when new mail arrives."
msgstr "O comando a executar quando chega novo correio."
-#: data/mail-notification.schemas.in.h:15
-msgid "The command to run when the icon is double-clicked."
-msgstr "O comando a executar quando fizer duplo-clique no ícone."
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "A altura em pixeis do diálogo de propriedades."
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:25
msgid "The height of the properties dialog in pixels."
msgstr "A altura em pixeis do diálogo de propriedades."
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:26
msgid "The list of mailboxes to monitor."
msgstr "A lista de caixas de correio a monitorizar."
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
msgid ""
"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
"certificate."
msgstr ""
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
msgid ""
"The list of trusted X509 certificates, represented by their MD5 fingerprint."
msgstr ""
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "A largura em pixeis do diálogo de propriedades."
+
+#: data/mail-notification.schemas.in.h:33
msgid "The width of the properties dialog in pixels."
msgstr "A largura em pixeis do diálogo de propriedades."
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
msgid "Trusted servers list"
msgstr ""
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
msgid "Whether Mail Notification has already been run or not."
msgstr "Se a Notificação de Correio já foi executada ou não."
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:36
#, fuzzy
msgid "Whether the status icon should blink on errors or not."
msgstr "Se a imagem pisca ou não"
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Se um comando deverá ser executado quando chega novo correio."
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Se um comando deverá ser executado quando chega novo correio."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
msgid "Whether to run a command when new mail arrives or not."
msgstr "Se um comando deverá ser executado quando chega novo correio."
-#: data/mail-notification.schemas.in.h:25
-msgid "Whether to run a command when the icon is double-clicked or not."
-msgstr "Se um comando deverá ser executado quando fizer duplo-clique no ícone."
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Largura do diálogo de propriedades"
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:42
msgid "Width of properties dialog"
msgstr "Largura do diálogo de propriedades"
@@ -162,131 +247,118 @@ msgstr "Orientação"
msgid "The orientation of the tray."
msgstr "A orientação do tabuleiro."
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
msgid "A Mail Notification Icon"
msgstr "Um Ícone de Notificação de Correio"
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
msgid "Jean-Yves Lefort <jylefort@brutele.be>"
msgstr "Duarte Henriques <duarte_henriques@myrealbox.com>"
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
msgid "<span style=\"italic\">autodetect</span>"
msgstr "<span style=\"italic\">autodetectar</span>"
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
msgid "_Location:"
msgstr "_Localização:"
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
msgid "_Browse..."
msgstr "_Procurar..."
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
msgid "The URI of the mailbox"
msgstr "O URI da caixa de correio"
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
msgid "Select a File or Folder"
msgstr "Escolha um Ficheiro ou Pasta"
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
msgid "Whether the image is blinking or not"
msgstr "Se a imagem pisca ou não"
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr "incapaz de ler do servidor: %s"
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr "incapaz de ler do servidor: EOF"
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr "incapaz de descodificar dados usando SASL: %s"
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
#, c-format
msgid "resolving %s"
msgstr "resolvendo %s"
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
#, c-format
msgid "unable to resolve %s: %s"
msgstr "incapaz de resolver %s: %s"
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
#, c-format
msgid "%s: unsupported address family"
msgstr "%s: família de endereços não suportada"
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
#, c-format
msgid "%s: unable to create socket: %s"
msgstr "%s: incapaz de criar socket: %s"
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
#, c-format
msgid "connecting to %s (%s) port %i"
msgstr "ligando a %s (%s), porto %i"
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
#, c-format
msgid "unable to connect: %s"
msgstr "incapaz de ligar: %s"
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
msgid "connected successfully"
msgstr "ligado com sucesso"
#. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
#, c-format
msgid "unable to connect to %s"
msgstr "incapaz de ligar a %s"
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
#, c-format
msgid "unable to initialize the OpenSSL library: %s"
msgstr "incapaz de inicializar a biblioteca OpenSSL: %s"
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
#, fuzzy, c-format
msgid "unable to create a SSL/TLS object: %s"
msgstr "incapaz de criar um objecto SSL: %s"
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
#, fuzzy, c-format
msgid "unable to set the SSL/TLS file descriptor: %s"
msgstr "incapaz de definir o descritor de ficheiro SSL: %s"
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
#, fuzzy, c-format
msgid "unable to perform the SSL/TLS handshake: %s"
msgstr "incapaz de definir o descritor de ficheiro SSL: %s"
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
msgid "untrusted server"
msgstr ""
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
#, c-format
msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
msgstr ""
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
#, c-format
msgid "%s, fingerprint: %s"
msgstr ""
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
msgid "missing certificate"
msgstr ""
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
#, c-format
msgid ""
"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -298,95 +370,109 @@ msgid ""
"shown again."
msgstr ""
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
msgid "Connect to untrusted server?"
msgstr ""
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
msgid "Co_nnect"
msgstr ""
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
#, c-format
msgid "response \"%s\" is not valid in current context"
msgstr "a resposta \"%s\" não é válida no contexto actual"
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
#, c-format
msgid "unable to parse response \"%s\""
msgstr "incapaz de processar resposta \"%s\""
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "incapaz de ler do servidor: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "incapaz de ler do servidor: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "incapaz de descodificar dados usando SASL: %s"
+
+#: src/mn-client-session.c:746
#, c-format
msgid "unable to encode data using SASL: %s"
msgstr "incapaz de encodificar dados usando SASL: %s"
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
#, c-format
msgid "unable to write to server: %s"
msgstr "incapaz de escrever para o servidor: %s"
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
msgid "unable to write to server: EOF"
msgstr "incapaz de escrever para o servidor: EOF"
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
#, c-format
msgid "unable to encode Base64: %s"
msgstr "incapaz de encodificar em Base64: %s"
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
#, c-format
msgid "unable to initialize the SASL library: %s"
msgstr "incapaz de inicializar a biblioteca SASL: %s"
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
#, c-format
msgid "unable to retrieve local address of socket: %s"
msgstr "incapaz de obter o endereço local do socket: %s"
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
#, c-format
msgid "unable to retrieve remote address of socket: %s"
msgstr "incapaz de obter endereço remoto do socket: %s"
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
#, c-format
msgid "warning: unable to set SASL security properties: %s"
msgstr "aviso: incapaz de definir as propriedades de segurança SASL: %s"
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
msgid ""
"unable to start SASL authentication: SASL asked for something we did not know"
msgstr ""
"incapaz de iniciar a autenticação SASL: SASL perguntou algo que não sabíamos"
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
#, c-format
msgid "unable to start SASL authentication: %s"
msgstr "incapaz de iniciar autenticação SASL: %s"
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
#, c-format
msgid "unable to create a SASL connection: %s"
msgstr "incapaz de criar uma ligação SASL: %s"
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
msgid "SASL asked for something we did not know, aborting SASL authentication"
msgstr "SASL perguntou algo que não sabíamos, abortando a autenticação SASL"
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
#, c-format
msgid "%s, aborting SASL authentication"
msgstr "%s, abortando a autenticação SASL"
#. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
#, c-format
msgid "unable to decode Base64 input from server: %s"
msgstr "incapaz de descodificar o input em Base64 do servidor: %s"
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
msgid ""
"the server sent a SASL challenge, but there was a pending initial SASL "
"client response"
@@ -394,7 +480,7 @@ msgstr ""
"o servidor enviou um desafio SASL, mas havia uma resposta SASL inicial "
"pendente do cliente"
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
msgid ""
"the server did not send a SASL challenge, but there was no pending initial "
"SASL client response"
@@ -402,136 +488,193 @@ msgstr ""
"o servidor não enviou um desafio SASL, mas não havia uma resposta SASL "
"inicial pendente do cliente"
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
#, c-format
msgid "a SASL security layer of strength factor %i is now active"
msgstr "está agora activa uma camada de segurança SASL com factor de força %i"
#. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1028
+#: src/mn-client-session.c:1117
#, c-format
msgid "unable to get SASL_MAXOUTBUF property: %s"
msgstr "incapaz de obter a propriedade SASL_MAXOUTBUF: %s"
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
#, c-format
msgid "warning: unable to get SASL_SSF property: %s"
msgstr "aviso: incapaz de obter a propriedade SASL_SSF: %s"
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
#, c-format
msgid "recursively unsetting %s"
msgstr ""
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
msgid "syncing the GConf database"
msgstr ""
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
#, fuzzy
msgid "completed"
msgstr "Completo"
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
msgid "Your Gmail username"
msgstr "O seu nome de utilizador Gmail"
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
msgid "Your Gmail password"
msgstr "A sua senha Gmail"
-#: src/mn-gmail-mailbox.gob:220
+#: src/mn-gmail-mailbox.gob:65
+#, fuzzy
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr "suporte SSL não foi compilado"
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "incapaz de processar resposta \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
msgid "logging in"
msgstr "ligando-se"
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "login falhou"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
#, c-format
msgid "unable to transfer data: %s"
msgstr "incapaz de transferir dados: %s"
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
-msgid "login failed"
-msgstr "login falhou"
-
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:409
msgid "successfully logged in"
msgstr "ligado com sucesso"
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
msgid "searching for unread mail"
msgstr "a procurar correio não lido"
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "a procurar correio não lido"
+
+#: src/mn-gmail-mailbox.gob:604
msgid "unable to parse Gmail data"
msgstr "incapaz de processar dados Gmail"
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "incapaz de resolver %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "incapaz de escrever para o servidor: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "incapaz de resolver %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "incapaz de monitorizar %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "incapaz de fechar pasta: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
msgid "Mailbox:"
msgstr "Caixa de Correio:"
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
msgid "in_box"
msgstr "caixa de _entrada"
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
msgid "oth_er:"
msgstr "_outros"
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
msgid "The hostname or IP address of the IMAP server"
msgstr "O hostname ou endereço IP do servidor IMAP"
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
msgid "Your username on the IMAP server"
msgstr "O seu nome de utilizador no servidor IMAP"
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
msgid "Your password on the IMAP server"
msgstr "A sua senha no servidor IMAP"
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
msgid "The port number of the IMAP server"
msgstr "O número do porto do servidor IMAP"
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
msgid "The mailbox name"
msgstr "O nome da caixa de correio"
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
#, fuzzy
msgid "SSL/TLS support has not been compiled in"
msgstr "suporte SSL não foi compilado"
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
msgid "server did not send capabilities"
msgstr "servidor não enviou habilidades"
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
msgstr "servidor anunciou LOGINDISABLED, não usando a autenticação LOGIN"
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
msgid "unable to login"
msgstr "incapaz de ligar"
#. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "servidor não enviou estado"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "servidor não enviou estado"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "incapaz de ligar: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
msgid "server did not send status"
msgstr "servidor não enviou estado"
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
msgid "unknown server error"
msgstr "erro de servidor desconhecido"
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
#, fuzzy
msgid "server does not support in-band SSL/TLS"
msgstr "servidor não suporta autenticação APOP"
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
msgid ""
"a SASL authentication mechanism was selected but SASL support has not been "
"compiled in"
@@ -539,41 +682,32 @@ msgstr ""
"foi escolhido um mecanismo de autenticação SASL, mas o suporte SASL não foi "
"compilado"
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
#, c-format
msgid "unknown authentication mechanism \"%s\""
msgstr "mecanismo de autenticação desconhecido \"%s\""
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
msgid "falling back to IMAP LOGIN authentication"
msgstr "recorrendo à autenticação IMAP LOGIN"
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
msgid "authentication failed"
msgstr "autenticação falhou"
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
msgid "_Update"
msgstr "_Actualizar"
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
msgid "R_emove From Notification Area"
msgstr "_Remover da área de notificação"
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr "_Executar %s"
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr "_Executar acção por omissão"
-
#: src/mn-mailbox-properties-dialog.c:109
msgid "Add a Mailbox"
msgstr "Acrescentar uma Caixa de Correio"
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
#, c-format
msgid "%s Properties"
msgstr "Propriedades de %s"
@@ -622,56 +756,61 @@ msgstr "Completo"
msgid "Whether the properties are completely filled or not"
msgstr "Se as propriedades estão completamente preenchidas"
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
msgid "Mailbox"
msgstr "Caixa de Correio"
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
msgid "Format"
msgstr "Formato"
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "Unable to add mailbox"
msgstr "Incapaz de adicionar caixa de correio"
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "The mailbox is already in the list."
msgstr "A caixa de correio já está na lista."
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
msgid "The mailbox URI"
msgstr "O URI da caixa de correio"
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
msgid "The mailbox human-readable name"
msgstr "O nome legível da caixa de correio"
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
msgid "Whether the mailbox has to be manually checked or not"
msgstr "Se a caixa de correio tem de ser manualmente verificada"
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
msgid "Whether the mailbox has new mail or not"
msgstr "Se a caixa de correio tem novo correio"
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
msgid "The mailbox error, if any"
msgstr "O erro da caixa de correio, se houver"
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
msgid "does not exist"
msgstr "não existe"
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
msgid "unknown format"
msgstr "formato desconhecido"
-#: src/mn-mailbox.gob:355
-#, c-format
-msgid "unable to monitor %s: %s"
-msgstr "incapaz de monitorizar %s: %s"
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr "incapaz de iniciar autenticação SASL: %s"
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
#, c-format
msgid ""
"As a fallback, they will be checked every %i second (this delay is "
@@ -686,7 +825,7 @@ msgstr[1] ""
"Como medida de recurso, serão verificadas a cada %i segundos (este atraso é "
"configurável no Diálogo de Propriedades)."
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
#, c-format
msgid ""
"As a fallback, they will be checked every %i minute (this delay is "
@@ -701,7 +840,7 @@ msgstr[1] ""
"Como medida de recurso, serão verificadas a cada %i minutos (este atraso é "
"configurável no Diálogo de Propriedades)."
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
#, c-format
msgid ""
"As a fallback, they will be checked approximately every %i minute (this "
@@ -716,11 +855,11 @@ msgstr[1] ""
"Como medida de recurso, serão verificadas aproximadamente cada %i minutos "
"(este atraso é configurável no Diálogo de Propriedades)."
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
msgid "A monitoring error has occurred"
msgstr "Ocorreu um erro de monitorização"
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
#, fuzzy, c-format
msgid ""
"Mail Notification was unable to enable immediate notification for one or "
@@ -729,76 +868,90 @@ msgstr ""
"A Notificação de Correio foi incapaz de activar notificação automática para "
"uma ou mais caixas de correio. %s"
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Se a caixa de correio tem de ser manualmente verificada"
+
+#: src/mn-mailboxes.gob:266
#, c-format
msgid "%s is unsupported: %s"
msgstr "%s não é suportado: %s"
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has new mail"
msgstr "%s tem correio novo"
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has no new mail"
msgstr "%s não tem correio novo"
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
#, c-format
msgid "%s reported an error: %s"
msgstr "%s relatou um erro: %s"
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
#, c-format
msgid "unable to open folder \"new\": %s"
msgstr "incapaz de abrir pasta \"new\": %s"
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
#, c-format
msgid "unable to close folder \"new\": %s"
msgstr "incapaz de fechar pasta \"new\": %s"
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
#, c-format
msgid "error while reading folder \"new\": %s"
msgstr "erro ao ler pasta \"new\": %s"
-#: src/mn-main.c:85
+#: src/mn-main.c:97
#, c-format
msgid "Compiled-in mailbox backends: %s\n"
msgstr "Backends mailbox compilados: %s\n"
-#: src/mn-main.c:103
+#: src/mn-main.c:114
#, c-format
msgid "Compiled-in features: %s\n"
msgstr "Características compiladas: %s\n"
-#: src/mn-main.c:133
+#: src/mn-main.c:166
msgid "Enable informational output"
msgstr "Activar output informacional"
-#: src/mn-main.c:142
+#: src/mn-main.c:175
msgid "List compiled-in features and exit"
msgstr "Listar características compiladas e sair"
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Mostrar o diálogo Sobre"
+
+#: src/mn-main.c:193
msgid "Display the properties dialog"
msgstr "Mostrar o diálogo de propriedades"
-#: src/mn-main.c:160
+#: src/mn-main.c:202
msgid "Display the about dialog"
msgstr "Mostrar o diálogo Sobre"
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
msgid "Update the mail status"
msgstr "Actualizar o estado do correio"
-#: src/mn-main.c:178
+#: src/mn-main.c:229
msgid "Report the mail status"
msgstr "Relatar o estado do correio"
-#: src/mn-main.c:187
+#: src/mn-main.c:238
msgid "Unset obsolete GConf configuration and exit"
msgstr ""
@@ -806,11 +959,11 @@ msgstr ""
#. * We can't use mn_error_dialog() because gtk_init() has not been
#. * called yet.
#.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
msgid "multi-threading is not available"
msgstr "multi-threading não está disponível"
-#: src/mn-main.c:258
+#: src/mn-main.c:309
msgid ""
"Bonobo could not locate the automation object. Please check your Mail "
"Notification installation."
@@ -818,19 +971,19 @@ msgstr ""
"Bonobo não conseguiu encontrar o objecto de automação. Por favor verifique a "
"sua instalação de Notificação de Correio."
-#: src/mn-main.c:263
+#: src/mn-main.c:314
msgid "Unable to initialize the GnomeVFS library."
msgstr "Incapaz de inicializar a biblioteca GnomeVFS."
-#: src/mn-main.c:285
+#: src/mn-main.c:350
msgid "updating the mail status"
msgstr "actualizando o estado do correio"
-#: src/mn-main.c:301
+#: src/mn-main.c:368
msgid "Mail Notification is already running"
msgstr "Notificação de Correio já está a ser executado"
-#: src/mn-main.c:308
+#: src/mn-main.c:375
msgid ""
"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
"Please check your Mail Notification installation."
@@ -838,7 +991,7 @@ msgstr ""
"Bonobo não conseguiu encontrar o ficheiro GNOME_MailNotification_Automation."
"server. Por favor verifique a sua instalação da Notificação de Correio."
-#: src/mn-main.c:312
+#: src/mn-main.c:379
msgid ""
"Bonobo was unable to register the automation server. Please check your Mail "
"Notification installation."
@@ -846,144 +999,210 @@ msgstr ""
"Bonobo foi incapaz de registar o servidor de automação. Por favor verifique "
"a sua instalação da Notificação de Correio."
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
#, c-format
msgid "error while reading mailbox: %s"
msgstr "erro ao ler a caixa de correio: %s"
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
#, c-format
msgid "unable to open mailbox: %s"
msgstr "erro ao abrir a caixa de correio: %s"
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "incapaz de processar URI IMAP"
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
#, c-format
msgid "error while reading .mh_sequences: %s"
msgstr "erro ao ler .mh_sequences: %s"
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
#, c-format
msgid "unable to open .mh_sequences: %s"
msgstr "erro ao abrir .mh_sequences: %s"
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
msgid "detecting"
msgstr "detectando"
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
msgid "_Hostname:"
msgstr "_Hostname:"
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
msgid "_Details"
msgstr "_Detalhes"
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
msgid "sta_ndard"
msgstr "sta_ndard"
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
msgid "_in-band SSL/TLS"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
msgid "SSL/TLS on sepa_rate port"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
msgid "The hostname or IP address of the POP3 server"
msgstr "O hostname ou endereço IP do servidor POP3"
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
msgid "Your username on the POP3 server"
msgstr "O seu nome de utilizador no servidor POP3"
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
msgid "Your password on the POP3 server"
msgstr "A sua senha no servidor POP3"
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
msgid "The port number of the POP3 server"
msgstr "O número do porto do servidor POP3"
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
msgid "invalid arguments for the LOGIN-DELAY capability"
msgstr "argumentos inválidos para a habilidade LOGIN-DELAY"
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "erro de servidor desconhecido"
+
+#: src/mn-pop3-mailbox.gob:666
#, c-format
msgid "honouring LOGIN-DELAY, sleeping for %i second"
msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
msgstr[0] "honrando LOGIN-DELAY, dormindo por %i segundo"
msgstr[1] "honrando LOGIN-DELAY, dormindo por %i segundos"
-#: src/mn-pop3-mailbox.gob:682
+#: src/mn-pop3-mailbox.gob:831
msgid "server does not support APOP authentication"
msgstr "servidor não suporta autenticação APOP"
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
msgid "falling back to APOP authentication"
msgstr "recorrendo a autenticação APOP"
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
msgid "falling back to USER/PASS authentication"
msgstr "recorrendo a autenticação USER/PASS"
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Completo"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
msgid "No mailbox selected."
msgstr "Nenhuma caixa de correio seleccionada."
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
#, c-format
msgid "%i mailbox selected."
msgid_plural "%i mailboxes selected."
msgstr[0] "%i caixa de correio seleccionada."
msgstr[1] "%i caixas de correio seleccionadas."
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
-msgstr "ocorreu um erro de comando"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Tem novo correio."
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Ocorreu um erro de comando na Notificação de Correio"
+
+#: src/mn-shell.gob:97
#, c-format
-msgid "Unable to execute double-clicked command: %s."
-msgstr "Incapaz de executar comando de duplo-clique: %s."
+msgid "Unable to execute new mail command: %s."
+msgstr "Incapaz de executar o novo comando de correio: %s."
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
msgid "The following mailbox has new mail:\n"
msgid_plural "The following mailboxes have new mail:\n"
msgstr[0] "A seguinte caixa de correio tem novo correio:\n"
msgstr[1] "As seguintes caixas de correio têm novo correio:\n"
-#: src/mn-shell.gob:296
+#: src/mn-shell.gob:274
msgid "You have no new mail."
msgstr "Não tem correio novo."
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
msgid "The following mailbox reported an error:\n"
msgid_plural "The following mailboxes reported an error:\n"
msgstr[0] "A seguinte caixa de correio relatou um erro:\n"
msgstr[1] "As seguintes caixas de correios relataram um erro:\n"
-#: src/mn-shell.gob:304
+#: src/mn-shell.gob:282
msgid "The following mailbox is unsupported:\n"
msgid_plural "The following mailboxes are unsupported:\n"
msgstr[0] "A seguinte caixa de correio não é suportada:\n"
msgstr[1] "As seguintes caixas de correio não são suportadas:\n"
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr "Tem novo correio."
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr "Ocorreu um erro de comando na Notificação de Correio"
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr "Incapaz de executar o novo comando de correio: %s."
-
#: src/mn-ssl.c:79
#, fuzzy
msgid "unknown SSL/TLS error"
@@ -993,33 +1212,37 @@ msgstr "erro de servidor desconhecido"
msgid "Select _All"
msgstr "Seleccionar _Todas"
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
#, c-format
msgid "unable to open folder: %s"
msgstr "incapaz de abrir pasta: %s"
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
#, c-format
msgid "unable to close folder: %s"
msgstr "incapaz de fechar pasta: %s"
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
#, c-format
msgid "error while reading folder: %s"
msgstr "erro ao ler pasta: %s"
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
msgid "System Mailbox"
msgstr "Caixa de Correio de Sistema"
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
#, c-format
msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
msgstr ""
"Será usada a sua caixa de correio de sistema (<span weight=\"bold\">%s</"
"span>)."
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
msgid ""
"The location of your system mailbox could not be detected. Please set the "
"MAIL environment variable."
@@ -1027,45 +1250,59 @@ msgstr ""
"A localização da sua caixa de correi ode sistema não pode ser detectada. Por "
"favor defina a variável de ambiente MAIL."
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
msgid "The reason why the mailbox is unsupported"
msgstr "A razão pela qual a caixa de correio não é suportada"
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
msgid "unsupported"
msgstr "não suportado"
-#: src/mn-util.c:199
+#: src/mn-util.c:233
#, c-format
msgid "error loading image: %s"
msgstr "erro ao carregar imagem: %s"
-#: src/mn-util.c:237
-#, c-format
-msgid "widget %s not found in interface %s"
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
msgstr "widget %s não foi encontrada na interface %s"
-#: src/mn-util.c:355
+#: src/mn-util.c:385
msgid "received an invalid URI list"
msgstr "recebida uma lista de URIs inválida"
-#: src/mn-util.c:391
+#: src/mn-util.c:421
msgid "received an invalid Mozilla URL"
msgstr "recebido um URL Mozilla inválido"
-#: src/mn-util.c:484
+#: src/mn-util.c:514
msgid "Unable to display help"
msgstr "Incapaz de mostrar ajuda"
-#: src/mn-util.c:498
+#: src/mn-util.c:528
#, c-format
msgid "Unable to create a thread: %s."
msgstr "Incapaz de criar uma thread: %s."
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
msgid "A fatal error has occurred in Mail Notification"
msgstr "Ocorreu um erro fatal na Notificação de Correio"
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "incapaz de ligar a %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
#: ui/mailbox-properties.glade.h:1
msgid "_Mailbox type:"
msgstr "_Tipo de caixa de correio:"
@@ -1079,82 +1316,147 @@ msgid "*"
msgstr "*"
#: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
-msgstr "<span weight=\"bold\">Comandos</span>"
-
-#: ui/properties.glade.h:4
msgid "<span weight=\"bold\">General</span>"
msgstr "<span weight=\"bold\">Geral</span>"
-#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
msgstr "<span weight=\"bold\">Caixas de Correio</span>"
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Comandos</span>"
+
#: ui/properties.glade.h:6
-msgid "Mail Notification Properties"
-msgstr "Propriedades de Notificação de Correio"
+msgid "General"
+msgstr ""
#: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
-msgstr "A quantidade de tempo a esperar entre verificações de correio"
+msgid "Hori_zontal offset:"
+msgstr ""
#: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
-msgstr "O comando a executar quando chega novo correio"
+msgid "Mail Notification Properties"
+msgstr "Propriedades de Notificação de Correio"
#: ui/properties.glade.h:9
-msgid "The command to run when the icon is double-clicked"
-msgstr "O comando a executar quando fizer duplo-clique no ícone"
+msgid "Mail Summary Popup"
+msgstr ""
#: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
-msgstr "Quando chega _novo correio:"
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Caixa de Correio"
#: ui/properties.glade.h:11
-msgid "When double-click_ed:"
-msgstr "Quando há um duplo-clique:"
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Localização:"
#: ui/properties.glade.h:12
#, fuzzy
-msgid "Whether the status icon should blink on errors or not"
-msgstr "Se a imagem pisca ou não"
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
-msgstr "Se deve ser executado um comando quando chega novo correio"
+msgid "The amount of time to wait between mail checks"
+msgstr "A quantidade de tempo a esperar entre verificações de correio"
#: ui/properties.glade.h:14
-msgid "Whether to run a command when the icon is double-clicked or not"
-msgstr "Se deve ser executado um comando quando fizer duplo-clique no ícone"
+msgid "The command to run when new mail arrives"
+msgstr "O comando a executar quando chega novo correio"
#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:17
+#, fuzzy
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Se a imagem pisca ou não"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Se a caixa de correio tem novo correio"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Se deve ser executado um comando quando chega novo correio"
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr "Se deve ser executado um comando quando chega novo correio"
+
+#: ui/properties.glade.h:21
#, fuzzy
msgid ""
"Whether to start Mail Notification when you log into your GNOME session or "
"not"
msgstr "Se a Notificação de Correio já foi executada ou não."
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
msgid "_Blink on errors"
msgstr ""
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
msgid "_Delay between mail checks:"
msgstr "_Intervalo entre verificações de correio:"
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Executar um comando quando chega novo correio"
+
+#: ui/properties.glade.h:27
#, fuzzy
msgid "_Start Mail Notification on GNOME login"
msgstr "Um Ícone de Notificação de Correio"
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
msgid "minutes"
msgstr "minutos"
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
msgid "seconds"
msgstr "segundos"
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
+#, fuzzy
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Caixas de Correio</span>"
+
#: ui/welcome.glade.h:1
#, fuzzy
msgid ""
@@ -1191,14 +1493,48 @@ msgstr "_Configurar Notificação de Correio"
msgid "_Skip configuration"
msgstr "_Saltar configuração"
+#~ msgid "Double-clicked command"
+#~ msgstr "Comando de duplo-clique"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Executar um comando quando fizer duplo-clique no ícone"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr "O comando a executar quando fizer duplo-clique no ícone."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Se um comando deverá ser executado quando fizer duplo-clique no ícone."
+
#~ msgid "unable to parse Gmail URI"
#~ msgstr "incapaz de processar URI Gmail"
-#~ msgid "unable to parse IMAP URI"
-#~ msgstr "incapaz de processar URI IMAP"
+#~ msgid "_Run %s"
+#~ msgstr "_Executar %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "_Executar acção por omissão"
#~ msgid "_SSL"
#~ msgstr "_SSL"
#~ msgid "unable to parse POP3 URI"
#~ msgstr "incapaz de processar URI POP3"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "ocorreu um erro de comando"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Incapaz de executar comando de duplo-clique: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr "O comando a executar quando fizer duplo-clique no ícone"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Quando chega _novo correio:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "Quando há um duplo-clique:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Se deve ser executado um comando quando fizer duplo-clique no ícone"
diff --git a/po/ru.gmo b/po/ru.gmo
Binary files differ.
diff --git a/po/ru.po b/po/ru.po
@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: mail-notification 0.5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2004-09-09 01:43+0200\n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
"PO-Revision-Date: 2004-07-21 21:58+0200\n"
"Last-Translator: Dan Korostelev <dan@ats.energo.ru>\n"
"Language-Team: Russian\n"
@@ -37,8 +37,8 @@ msgstr "Иконка входящих сообщений"
#: data/mail-notification-properties.desktop.in.h:2
#: data/mail-notification.desktop.in.h:2
-#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:38
-#: src/mn-mail-icon.gob:160 src/mn-main.c:221
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
msgid "Mail Notification"
msgstr "Иконка входящих сообщений"
@@ -48,121 +48,195 @@ msgstr ""
"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
#: data/mail-notification.schemas.in.h:1
-msgid "Blink on errors"
+msgid "Automatically close the mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:2
-msgid "Delay between mail checks (minutes part)."
+msgid "Blink on errors"
msgstr ""
#: data/mail-notification.schemas.in.h:3
-msgid "Delay between mail checks (seconds part)."
+msgid "Delay between mail checks (minutes part)."
msgstr ""
#: data/mail-notification.schemas.in.h:4
-msgid "Double-clicked command"
+msgid "Delay between mail checks (seconds part)."
msgstr ""
#: data/mail-notification.schemas.in.h:5
-msgid "Fingerprints of trusted X509 certificates"
+msgid "Do not show the immediate notification error dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:6
-msgid "Has already been run"
+msgid "Enable mail summary popup"
msgstr ""
#: data/mail-notification.schemas.in.h:7
-msgid "Height of properties dialog"
+msgid "Fingerprints of trusted X509 certificates"
msgstr ""
#: data/mail-notification.schemas.in.h:8
-msgid "Mailboxes list"
+msgid "Has already been run"
msgstr ""
#: data/mail-notification.schemas.in.h:9
-msgid "Minutes between mail checks"
+msgid "Height of mail summary dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:10
-msgid "New mail command"
+msgid "Height of properties dialog"
msgstr ""
#: data/mail-notification.schemas.in.h:11
-#, fuzzy
-msgid "Run a command when new mail arrives"
+msgid "Mail summary popup horizontal offset"
msgstr ""
-"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
#: data/mail-notification.schemas.in.h:12
-#, fuzzy
-msgid "Run a command when the icon is double-clicked"
+msgid "Mail summary popup position"
msgstr ""
-"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
#: data/mail-notification.schemas.in.h:13
-msgid "Seconds between mail checks"
+msgid "Mail summary popup vertical offset"
msgstr ""
#: data/mail-notification.schemas.in.h:14
+msgid "Mailbox list"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:18
#, fuzzy
-msgid "The command to run when new mail arrives."
+msgid "Run a command when new mail arrives"
msgstr ""
"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
-#: data/mail-notification.schemas.in.h:15
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:22
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:23
#, fuzzy
-msgid "The command to run when the icon is double-clicked."
+msgid "The command to run when new mail arrives."
msgstr ""
"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
-#: data/mail-notification.schemas.in.h:16
+#: data/mail-notification.schemas.in.h:24
+msgid "The height of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:25
msgid "The height of the properties dialog in pixels."
msgstr ""
-#: data/mail-notification.schemas.in.h:17
+#: data/mail-notification.schemas.in.h:26
msgid "The list of mailboxes to monitor."
msgstr ""
-#: data/mail-notification.schemas.in.h:18
+#: data/mail-notification.schemas.in.h:27
msgid ""
"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
"certificate."
msgstr ""
-#: data/mail-notification.schemas.in.h:19
+#: data/mail-notification.schemas.in.h:28
msgid ""
"The list of trusted X509 certificates, represented by their MD5 fingerprint."
msgstr ""
-#: data/mail-notification.schemas.in.h:20
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+msgid "The width of the mail summary dialog in pixels."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:33
msgid "The width of the properties dialog in pixels."
msgstr ""
-#: data/mail-notification.schemas.in.h:21
+#: data/mail-notification.schemas.in.h:34
msgid "Trusted servers list"
msgstr ""
-#: data/mail-notification.schemas.in.h:22
+#: data/mail-notification.schemas.in.h:35
msgid "Whether Mail Notification has already been run or not."
msgstr ""
-#: data/mail-notification.schemas.in.h:23
+#: data/mail-notification.schemas.in.h:36
msgid "Whether the status icon should blink on errors or not."
msgstr ""
-#: data/mail-notification.schemas.in.h:24
+#: data/mail-notification.schemas.in.h:37
#, fuzzy
-msgid "Whether to run a command when new mail arrives or not."
+msgid "Whether to automatically close the mail summary popup or not."
msgstr ""
"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
-#: data/mail-notification.schemas.in.h:25
+#: data/mail-notification.schemas.in.h:38
#, fuzzy
-msgid "Whether to run a command when the icon is double-clicked or not."
+msgid "Whether to display the mail summary popup when new mail arrives or not."
msgstr ""
"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
-#: data/mail-notification.schemas.in.h:26
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+#, fuzzy
+msgid "Whether to run a command when new mail arrives or not."
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: data/mail-notification.schemas.in.h:41
+msgid "Width of mail summary dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:42
msgid "Width of properties dialog"
msgstr ""
@@ -178,131 +252,118 @@ msgstr ""
msgid "The orientation of the tray."
msgstr ""
-#: src/mn-about-dialog.gob:41
+#: src/mn-about-dialog.gob:43
msgid "A Mail Notification Icon"
msgstr ""
-#: src/mn-about-dialog.gob:44
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
msgid "Jean-Yves Lefort <jylefort@brutele.be>"
msgstr "Dan Korostelev <dan@ats.energo.ru>"
-#: src/mn-auth-combo-box.gob:99 src/mn-autodetect-mailbox-properties.gob:35
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
msgid "<span style=\"italic\">autodetect</span>"
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:66
+#: src/mn-autodetect-mailbox-properties.gob:68
msgid "_Location:"
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:72
+#: src/mn-autodetect-mailbox-properties.gob:74
msgid "_Browse..."
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:79
+#: src/mn-autodetect-mailbox-properties.gob:81
msgid "The URI of the mailbox"
msgstr ""
-#: src/mn-autodetect-mailbox-properties.gob:116
+#: src/mn-autodetect-mailbox-properties.gob:118
msgid "Select a File or Folder"
msgstr ""
-#: src/mn-blinking-image.gob:30
+#: src/mn-blinking-image.gob:32
msgid "Whether the image is blinking or not"
msgstr ""
-#: src/mn-client-session.c:196 src/mn-client-session.c:203
-#, c-format
-msgid "unable to read from server: %s"
-msgstr ""
-
-#: src/mn-client-session.c:201
-msgid "unable to read from server: EOF"
-msgstr ""
-
-#: src/mn-client-session.c:213
-#, c-format
-msgid "unable to decode data using SASL: %s"
-msgstr ""
-
-#: src/mn-client-session.c:284
+#: src/mn-client-session.c:229
#, c-format
msgid "resolving %s"
msgstr ""
-#: src/mn-client-session.c:294
+#: src/mn-client-session.c:239
#, c-format
msgid "unable to resolve %s: %s"
msgstr ""
-#: src/mn-client-session.c:331
+#: src/mn-client-session.c:276
#, c-format
msgid "%s: unsupported address family"
msgstr ""
-#: src/mn-client-session.c:338
+#: src/mn-client-session.c:283
#, c-format
msgid "%s: unable to create socket: %s"
msgstr ""
-#: src/mn-client-session.c:342
+#: src/mn-client-session.c:287
#, c-format
msgid "connecting to %s (%s) port %i"
msgstr ""
-#: src/mn-client-session.c:345
+#: src/mn-client-session.c:290
#, c-format
msgid "unable to connect: %s"
msgstr ""
-#: src/mn-client-session.c:350
+#: src/mn-client-session.c:295
msgid "connected successfully"
msgstr ""
#. if reached, we couldn't find a working address
-#: src/mn-client-session.c:356
+#: src/mn-client-session.c:301
#, c-format
msgid "unable to connect to %s"
msgstr ""
-#: src/mn-client-session.c:372
+#: src/mn-client-session.c:317
#, c-format
msgid "unable to initialize the OpenSSL library: %s"
msgstr ""
-#: src/mn-client-session.c:380
+#: src/mn-client-session.c:325
#, c-format
msgid "unable to create a SSL/TLS object: %s"
msgstr ""
-#: src/mn-client-session.c:386
+#: src/mn-client-session.c:331
#, c-format
msgid "unable to set the SSL/TLS file descriptor: %s"
msgstr ""
-#: src/mn-client-session.c:392
+#: src/mn-client-session.c:337
#, c-format
msgid "unable to perform the SSL/TLS handshake: %s"
msgstr ""
-#: src/mn-client-session.c:398
+#: src/mn-client-session.c:343
msgid "untrusted server"
msgstr ""
-#: src/mn-client-session.c:402
+#: src/mn-client-session.c:347
#, c-format
msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
msgstr ""
-#: src/mn-client-session.c:449
+#: src/mn-client-session.c:394
#, c-format
msgid "%s, fingerprint: %s"
msgstr ""
-#: src/mn-client-session.c:478
+#: src/mn-client-session.c:423
msgid "missing certificate"
msgstr ""
-#: src/mn-client-session.c:504
+#: src/mn-client-session.c:449
#, c-format
msgid ""
"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
@@ -314,272 +375,329 @@ msgid ""
"shown again."
msgstr ""
-#: src/mn-client-session.c:521
+#: src/mn-client-session.c:466
msgid "Connect to untrusted server?"
msgstr ""
-#: src/mn-client-session.c:526
+#: src/mn-client-session.c:471
msgid "Co_nnect"
msgstr ""
-#: src/mn-client-session.c:584
+#: src/mn-client-session.c:527
#, c-format
msgid "response \"%s\" is not valid in current context"
msgstr ""
-#: src/mn-client-session.c:610
+#: src/mn-client-session.c:553
#, c-format
msgid "unable to parse response \"%s\""
msgstr ""
-#: src/mn-client-session.c:657
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr ""
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr ""
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr ""
+
+#: src/mn-client-session.c:746
#, c-format
msgid "unable to encode data using SASL: %s"
msgstr ""
-#: src/mn-client-session.c:688 src/mn-client-session.c:695
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
#, c-format
msgid "unable to write to server: %s"
msgstr ""
-#: src/mn-client-session.c:693
+#: src/mn-client-session.c:782
msgid "unable to write to server: EOF"
msgstr ""
-#: src/mn-client-session.c:725
+#: src/mn-client-session.c:814
#, c-format
msgid "unable to encode Base64: %s"
msgstr ""
-#: src/mn-client-session.c:828
+#: src/mn-client-session.c:917
#, c-format
msgid "unable to initialize the SASL library: %s"
msgstr ""
-#: src/mn-client-session.c:837
+#: src/mn-client-session.c:926
#, c-format
msgid "unable to retrieve local address of socket: %s"
msgstr ""
-#: src/mn-client-session.c:843
+#: src/mn-client-session.c:932
#, c-format
msgid "unable to retrieve remote address of socket: %s"
msgstr ""
-#: src/mn-client-session.c:877
+#: src/mn-client-session.c:966
#, c-format
msgid "warning: unable to set SASL security properties: %s"
msgstr ""
-#: src/mn-client-session.c:916
+#: src/mn-client-session.c:1005
msgid ""
"unable to start SASL authentication: SASL asked for something we did not know"
msgstr ""
-#: src/mn-client-session.c:920
+#: src/mn-client-session.c:1009
#, c-format
msgid "unable to start SASL authentication: %s"
msgstr ""
-#: src/mn-client-session.c:924
+#: src/mn-client-session.c:1013
#, c-format
msgid "unable to create a SASL connection: %s"
msgstr ""
-#: src/mn-client-session.c:974
+#: src/mn-client-session.c:1063
msgid "SASL asked for something we did not know, aborting SASL authentication"
msgstr ""
-#: src/mn-client-session.c:978
+#: src/mn-client-session.c:1067
#, c-format
msgid "%s, aborting SASL authentication"
msgstr ""
#. compliance error
-#: src/mn-client-session.c:983
+#: src/mn-client-session.c:1072
#, c-format
msgid "unable to decode Base64 input from server: %s"
msgstr ""
-#: src/mn-client-session.c:986
+#: src/mn-client-session.c:1075
msgid ""
"the server sent a SASL challenge, but there was a pending initial SASL "
"client response"
msgstr ""
-#: src/mn-client-session.c:1000
+#: src/mn-client-session.c:1089
msgid ""
"the server did not send a SASL challenge, but there was no pending initial "
"SASL client response"
msgstr ""
-#: src/mn-client-session.c:1023
+#: src/mn-client-session.c:1112
#, c-format
msgid "a SASL security layer of strength factor %i is now active"
msgstr ""
#. a security layer is active but we can't retrieve maxoutbuf -> fatal
-#: src/mn-client-session.c:1028
+#: src/mn-client-session.c:1117
#, c-format
msgid "unable to get SASL_MAXOUTBUF property: %s"
msgstr ""
-#: src/mn-client-session.c:1034
+#: src/mn-client-session.c:1123
#, c-format
msgid "warning: unable to get SASL_SSF property: %s"
msgstr ""
-#: src/mn-conf.c:109
+#: src/mn-conf.c:123
#, c-format
msgid "recursively unsetting %s"
msgstr ""
-#: src/mn-conf.c:113
+#: src/mn-conf.c:127
msgid "syncing the GConf database"
msgstr ""
-#: src/mn-conf.c:116
+#: src/mn-conf.c:130
msgid "completed"
msgstr ""
-#: src/mn-gmail-mailbox-properties.gob:77
+#: src/mn-gmail-mailbox-properties.gob:79
msgid "Your Gmail username"
msgstr ""
-#: src/mn-gmail-mailbox-properties.gob:78
+#: src/mn-gmail-mailbox-properties.gob:80
msgid "Your Gmail password"
msgstr ""
-#: src/mn-gmail-mailbox.gob:220
-msgid "logging in"
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
msgstr ""
-#: src/mn-gmail-mailbox.gob:239 src/mn-gmail-mailbox.gob:279
-#: src/mn-gmail-mailbox.gob:313 src/mn-gmail-mailbox.gob:418
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
#, c-format
-msgid "unable to transfer data: %s"
+msgid "unable to parse URI \"%s\""
msgstr ""
-#: src/mn-gmail-mailbox.gob:265 src/mn-gmail-mailbox.gob:299
-#: src/mn-gmail-mailbox.gob:334
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
msgid "login failed"
msgstr ""
-#: src/mn-gmail-mailbox.gob:328
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:409
msgid "successfully logged in"
msgstr ""
-#: src/mn-gmail-mailbox.gob:406
+#: src/mn-gmail-mailbox.gob:487
msgid "searching for unread mail"
msgstr ""
-#: src/mn-gmail-mailbox.gob:427
+#: src/mn-gmail-mailbox.gob:491
+msgid "unable to search for unread mail"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:604
msgid "unable to parse Gmail data"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:92
+#: src/mn-gmime-stream-vfs.gob:49
+#, c-format
+msgid "unable to read %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, c-format
+msgid "unable to write to %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, c-format
+msgid "unable to seek in %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, c-format
+msgid "unable to tell position of %s: %s"
+msgstr ""
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, c-format
+msgid "unable to close %s: %s"
+msgstr ""
+
+#: src/mn-imap-mailbox-properties.gob:94
msgid "Mailbox:"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:96
+#: src/mn-imap-mailbox-properties.gob:98
msgid "in_box"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:107
+#: src/mn-imap-mailbox-properties.gob:109
msgid "oth_er:"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:122
+#: src/mn-imap-mailbox-properties.gob:124
msgid "The hostname or IP address of the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:123
+#: src/mn-imap-mailbox-properties.gob:125
msgid "Your username on the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:124
+#: src/mn-imap-mailbox-properties.gob:126
msgid "Your password on the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:125
-#: src/mn-imap-mailbox-properties.gob:126
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
msgid "The port number of the IMAP server"
msgstr ""
-#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:129
msgid "The mailbox name"
msgstr ""
-#: src/mn-imap-mailbox.gob:112 src/mn-pop3-mailbox.gob:125
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
msgid "SSL/TLS support has not been compiled in"
msgstr ""
-#: src/mn-imap-mailbox.gob:179
+#: src/mn-imap-mailbox.gob:203
msgid "server did not send capabilities"
msgstr ""
-#: src/mn-imap-mailbox.gob:292
+#: src/mn-imap-mailbox.gob:318
msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
msgstr ""
-#: src/mn-imap-mailbox.gob:293
+#: src/mn-imap-mailbox.gob:319
msgid "unable to login"
msgstr ""
#. compliance error
-#: src/mn-imap-mailbox.gob:361
+#: src/mn-imap-mailbox.gob:447
+msgid "server did not send search results"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+msgid "server did not send all the messages we requested"
+msgstr ""
+
+#: src/mn-imap-mailbox.gob:570
+msgid "unable to fetch message"
+msgstr ""
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
msgid "server did not send status"
msgstr ""
-#: src/mn-imap-mailbox.gob:583 src/mn-pop3-mailbox.gob:744
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
msgid "unknown server error"
msgstr ""
-#: src/mn-imap-mailbox.gob:656 src/mn-pop3-mailbox.gob:210
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
msgid "server does not support in-band SSL/TLS"
msgstr ""
-#: src/mn-imap-mailbox.gob:675 src/mn-pop3-mailbox.gob:674
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
msgid ""
"a SASL authentication mechanism was selected but SASL support has not been "
"compiled in"
msgstr ""
-#: src/mn-imap-mailbox.gob:683 src/mn-pop3-mailbox.gob:686
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
#, c-format
msgid "unknown authentication mechanism \"%s\""
msgstr ""
-#: src/mn-imap-mailbox.gob:701
+#: src/mn-imap-mailbox.gob:972
msgid "falling back to IMAP LOGIN authentication"
msgstr ""
-#: src/mn-imap-mailbox.gob:705 src/mn-pop3-mailbox.gob:720
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
msgid "authentication failed"
msgstr ""
-#: src/mn-mail-icon.gob:81
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
msgid "_Update"
msgstr ""
-#: src/mn-mail-icon.gob:87
+#: src/mn-mail-icon.gob:90
msgid "R_emove From Notification Area"
msgstr ""
-#: src/mn-mail-icon.gob:172
-#, c-format
-msgid "_Run %s"
-msgstr ""
-
-#: src/mn-mail-icon.gob:173
-msgid "_Run Default Action"
-msgstr ""
-
#: src/mn-mailbox-properties-dialog.c:109
msgid "Add a Mailbox"
msgstr ""
-#: src/mn-mailbox-properties-dialog.c:331
+#: src/mn-mailbox-properties-dialog.c:328
#, c-format
msgid "%s Properties"
msgstr ""
@@ -628,56 +746,61 @@ msgstr ""
msgid "Whether the properties are completely filled or not"
msgstr ""
-#: src/mn-mailbox-view.gob:254
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
msgid "Mailbox"
msgstr ""
-#: src/mn-mailbox-view.gob:268
+#. format column
+#: src/mn-mailbox-view.gob:279
msgid "Format"
msgstr ""
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "Unable to add mailbox"
msgstr ""
-#: src/mn-mailbox-view.gob:543
+#: src/mn-mailbox-view.gob:569
msgid "The mailbox is already in the list."
msgstr ""
-#: src/mn-mailbox.gob:122
+#: src/mn-mailbox.gob:133
msgid "The mailbox URI"
msgstr ""
-#: src/mn-mailbox.gob:133
+#: src/mn-mailbox.gob:144
msgid "The mailbox human-readable name"
msgstr ""
-#: src/mn-mailbox.gob:137
+#: src/mn-mailbox.gob:148
msgid "Whether the mailbox has to be manually checked or not"
msgstr ""
-#: src/mn-mailbox.gob:142
+#: src/mn-mailbox.gob:153
msgid "Whether the mailbox has new mail or not"
msgstr ""
-#: src/mn-mailbox.gob:147
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
msgid "The mailbox error, if any"
msgstr ""
-#: src/mn-mailbox.gob:251
+#: src/mn-mailbox.gob:310
msgid "does not exist"
msgstr ""
-#: src/mn-mailbox.gob:287
+#: src/mn-mailbox.gob:342
msgid "unknown format"
msgstr ""
-#: src/mn-mailbox.gob:355
+#: src/mn-mailbox.gob:408
#, c-format
-msgid "unable to monitor %s: %s"
+msgid "unable to enable immediate notification for %s: %s"
msgstr ""
-#: src/mn-mailbox.gob:369
+#: src/mn-mailbox.gob:426
#, c-format
msgid ""
"As a fallback, they will be checked every %i second (this delay is "
@@ -688,7 +811,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/mn-mailbox.gob:380
+#: src/mn-mailbox.gob:437
#, c-format
msgid ""
"As a fallback, they will be checked every %i minute (this delay is "
@@ -699,7 +822,7 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/mn-mailbox.gob:391
+#: src/mn-mailbox.gob:448
#, c-format
msgid ""
"As a fallback, they will be checked approximately every %i minute (this "
@@ -710,87 +833,99 @@ msgid_plural ""
msgstr[0] ""
msgstr[1] ""
-#: src/mn-mailbox.gob:405
+#: src/mn-mailbox.gob:464
msgid "A monitoring error has occurred"
msgstr ""
-#: src/mn-mailbox.gob:406
+#: src/mn-mailbox.gob:465
#, c-format
msgid ""
"Mail Notification was unable to enable immediate notification for one or "
"more mailboxes. %s"
msgstr ""
-#: src/mn-mailboxes.gob:143
+#: src/mn-mailboxes.gob:133
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr ""
+
+#: src/mn-mailboxes.gob:266
#, c-format
msgid "%s is unsupported: %s"
msgstr ""
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has new mail"
msgstr ""
-#: src/mn-mailboxes.gob:170
+#: src/mn-mailboxes.gob:297
#, c-format
msgid "%s has no new mail"
msgstr ""
-#: src/mn-mailboxes.gob:186
+#: src/mn-mailboxes.gob:323
#, c-format
msgid "%s reported an error: %s"
msgstr ""
-#: src/mn-maildir-mailbox.gob:109
+#: src/mn-maildir-mailbox.gob:119
#, c-format
msgid "unable to open folder \"new\": %s"
msgstr ""
-#: src/mn-maildir-mailbox.gob:137
+#: src/mn-maildir-mailbox.gob:161
#, c-format
msgid "unable to close folder \"new\": %s"
msgstr ""
-#: src/mn-maildir-mailbox.gob:140
+#: src/mn-maildir-mailbox.gob:164
#, c-format
msgid "error while reading folder \"new\": %s"
msgstr ""
-#: src/mn-main.c:85
+#: src/mn-main.c:97
#, c-format
msgid "Compiled-in mailbox backends: %s\n"
msgstr ""
-#: src/mn-main.c:103
+#: src/mn-main.c:114
#, c-format
msgid "Compiled-in features: %s\n"
msgstr ""
-#: src/mn-main.c:133
+#: src/mn-main.c:166
msgid "Enable informational output"
msgstr ""
-#: src/mn-main.c:142
+#: src/mn-main.c:175
msgid "List compiled-in features and exit"
msgstr ""
-#: src/mn-main.c:151
+#: src/mn-main.c:184
+msgid "Display the mail summary dialog"
+msgstr ""
+
+#: src/mn-main.c:193
msgid "Display the properties dialog"
msgstr ""
-#: src/mn-main.c:160
+#: src/mn-main.c:202
msgid "Display the about dialog"
msgstr ""
-#: src/mn-main.c:169
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
msgid "Update the mail status"
msgstr ""
-#: src/mn-main.c:178
+#: src/mn-main.c:229
msgid "Report the mail status"
msgstr ""
-#: src/mn-main.c:187
+#: src/mn-main.c:238
msgid "Unset obsolete GConf configuration and exit"
msgstr ""
@@ -798,179 +933,242 @@ msgstr ""
#. * We can't use mn_error_dialog() because gtk_init() has not been
#. * called yet.
#.
-#: src/mn-main.c:213
+#: src/mn-main.c:264
msgid "multi-threading is not available"
msgstr ""
-#: src/mn-main.c:258
+#: src/mn-main.c:309
msgid ""
"Bonobo could not locate the automation object. Please check your Mail "
"Notification installation."
msgstr ""
-#: src/mn-main.c:263
+#: src/mn-main.c:314
msgid "Unable to initialize the GnomeVFS library."
msgstr ""
-#: src/mn-main.c:285
+#: src/mn-main.c:350
msgid "updating the mail status"
msgstr ""
-#: src/mn-main.c:301
+#: src/mn-main.c:368
#, fuzzy
msgid "Mail Notification is already running"
msgstr "Иконка входящих сообщений"
-#: src/mn-main.c:308
+#: src/mn-main.c:375
msgid ""
"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
"Please check your Mail Notification installation."
msgstr ""
-#: src/mn-main.c:312
+#: src/mn-main.c:379
msgid ""
"Bonobo was unable to register the automation server. Please check your Mail "
"Notification installation."
msgstr ""
-#: src/mn-mbox-mailbox.gob:171
+#: src/mn-mbox-mailbox.gob:221
#, c-format
msgid "error while reading mailbox: %s"
msgstr ""
-#: src/mn-mbox-mailbox.gob:179
+#: src/mn-mbox-mailbox.gob:230
#, c-format
msgid "unable to open mailbox: %s"
msgstr ""
-#: src/mn-mh-mailbox.gob:122
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+msgid "unable to parse MIME message"
+msgstr ""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
#, c-format
msgid "error while reading .mh_sequences: %s"
msgstr ""
-#: src/mn-mh-mailbox.gob:130
+#: src/mn-mh-mailbox.gob:196
#, c-format
msgid "unable to open .mh_sequences: %s"
msgstr ""
-#: src/mn-pending-mailbox.gob:33
+#: src/mn-pending-mailbox.gob:35
msgid "detecting"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:74
+#: src/mn-pi-mailbox-properties.gob:76
msgid "_Hostname:"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:92
+#: src/mn-pi-mailbox-properties.gob:94
msgid "_Details"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:104
+#: src/mn-pi-mailbox-properties.gob:106
msgid "sta_ndard"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:114
+#: src/mn-pi-mailbox-properties.gob:116
msgid "_in-band SSL/TLS"
msgstr ""
-#: src/mn-pi-mailbox-properties.gob:124
+#: src/mn-pi-mailbox-properties.gob:126
msgid "SSL/TLS on sepa_rate port"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:84
+#: src/mn-pop3-mailbox-properties.gob:86
msgid "The hostname or IP address of the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:85
+#: src/mn-pop3-mailbox-properties.gob:87
msgid "Your username on the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:86
+#: src/mn-pop3-mailbox-properties.gob:88
msgid "Your password on the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox-properties.gob:87 src/mn-pop3-mailbox-properties.gob:88
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
msgid "The port number of the POP3 server"
msgstr ""
-#: src/mn-pop3-mailbox.gob:256
+#: src/mn-pop3-mailbox.gob:271
msgid "invalid arguments for the LOGIN-DELAY capability"
msgstr ""
-#: src/mn-pop3-mailbox.gob:523
+#: src/mn-pop3-mailbox.gob:536
+msgid "unknown error"
+msgstr ""
+
+#: src/mn-pop3-mailbox.gob:666
#, c-format
msgid "honouring LOGIN-DELAY, sleeping for %i second"
msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-pop3-mailbox.gob:682
+#: src/mn-pop3-mailbox.gob:831
msgid "server does not support APOP authentication"
msgstr ""
-#: src/mn-pop3-mailbox.gob:710
+#: src/mn-pop3-mailbox.gob:859
msgid "falling back to APOP authentication"
msgstr ""
-#: src/mn-pop3-mailbox.gob:715
+#: src/mn-pop3-mailbox.gob:864
msgid "falling back to USER/PASS authentication"
msgstr ""
-#: src/mn-properties.c:151
+#: src/mn-properties.c:161
+msgid "top left"
+msgstr ""
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
msgid "No mailbox selected."
msgstr ""
-#: src/mn-properties.c:156
+#: src/mn-properties.c:245
#, c-format
msgid "%i mailbox selected."
msgid_plural "%i mailboxes selected."
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:204
-msgid "A command error has occurred"
+#: src/mn-shell.gob:84
+msgid "You have new mail."
msgstr ""
-#: src/mn-shell.gob:205
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr ""
+
+#: src/mn-shell.gob:97
#, c-format
-msgid "Unable to execute double-clicked command: %s."
+msgid "Unable to execute new mail command: %s."
msgstr ""
-#: src/mn-shell.gob:292
+#: src/mn-shell.gob:270
msgid "The following mailbox has new mail:\n"
msgid_plural "The following mailboxes have new mail:\n"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:296
+#: src/mn-shell.gob:274
msgid "You have no new mail."
msgstr ""
-#: src/mn-shell.gob:299
+#: src/mn-shell.gob:277
msgid "The following mailbox reported an error:\n"
msgid_plural "The following mailboxes reported an error:\n"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:304
+#: src/mn-shell.gob:282
msgid "The following mailbox is unsupported:\n"
msgid_plural "The following mailboxes are unsupported:\n"
msgstr[0] ""
msgstr[1] ""
-#: src/mn-shell.gob:320
-msgid "You have new mail."
-msgstr ""
-
-#: src/mn-shell.gob:330
-msgid "A command error has occurred in Mail Notification"
-msgstr ""
-
-#: src/mn-shell.gob:331
-#, c-format
-msgid "Unable to execute new mail command: %s."
-msgstr ""
-
#: src/mn-ssl.c:79
msgid "unknown SSL/TLS error"
msgstr ""
@@ -979,75 +1177,93 @@ msgstr ""
msgid "Select _All"
msgstr ""
-#: src/mn-sylpheed-mailbox.gob:93
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
#, c-format
msgid "unable to open folder: %s"
msgstr ""
-#: src/mn-sylpheed-mailbox.gob:127
+#: src/mn-sylpheed-mailbox.gob:180
#, c-format
msgid "unable to close folder: %s"
msgstr ""
-#: src/mn-sylpheed-mailbox.gob:130
+#: src/mn-sylpheed-mailbox.gob:183
#, c-format
msgid "error while reading folder: %s"
msgstr ""
-#: src/mn-system-mailbox-properties.gob:32 src/mn-uri.gob:391
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
msgid "System Mailbox"
msgstr ""
-#: src/mn-system-mailbox-properties.gob:55
+#: src/mn-system-mailbox-properties.gob:57
#, c-format
msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
msgstr ""
-#: src/mn-system-mailbox-properties.gob:62
+#: src/mn-system-mailbox-properties.gob:64
msgid ""
"The location of your system mailbox could not be detected. Please set the "
"MAIL environment variable."
msgstr ""
-#: src/mn-unsupported-mailbox.gob:31
+#: src/mn-unsupported-mailbox.gob:33
msgid "The reason why the mailbox is unsupported"
msgstr ""
-#: src/mn-unsupported-mailbox.gob:38
+#: src/mn-unsupported-mailbox.gob:40
msgid "unsupported"
msgstr ""
-#: src/mn-util.c:199
+#: src/mn-util.c:233
#, c-format
msgid "error loading image: %s"
msgstr ""
-#: src/mn-util.c:237
+#: src/mn-util.c:271
#, c-format
-msgid "widget %s not found in interface %s"
+msgid "widget \"%s\" not found in interface \"%s\""
msgstr ""
-#: src/mn-util.c:355
+#: src/mn-util.c:385
msgid "received an invalid URI list"
msgstr ""
-#: src/mn-util.c:391
+#: src/mn-util.c:421
msgid "received an invalid Mozilla URL"
msgstr ""
-#: src/mn-util.c:484
+#: src/mn-util.c:514
msgid "Unable to display help"
msgstr ""
-#: src/mn-util.c:498
+#: src/mn-util.c:528
#, c-format
msgid "Unable to create a thread: %s."
msgstr ""
-#: src/mn-util.c:701
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
msgid "A fatal error has occurred in Mail Notification"
msgstr ""
+#: src/mn-util.c:804
+#, c-format
+msgid "unable to get current time: %s"
+msgstr ""
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
#: ui/mailbox-properties.glade.h:1
msgid "_Mailbox type:"
msgstr ""
@@ -1061,85 +1277,141 @@ msgid "*"
msgstr ""
#: ui/properties.glade.h:3
-msgid "<span weight=\"bold\">Commands</span>"
+msgid "<span weight=\"bold\">General</span>"
msgstr ""
#: ui/properties.glade.h:4
-msgid "<span weight=\"bold\">General</span>"
+msgid "<span weight=\"bold\">Mailbox List</span>"
msgstr ""
#: ui/properties.glade.h:5
-msgid "<span weight=\"bold\">Mailboxes</span>"
+msgid "<span weight=\"bold\">Position</span>"
msgstr ""
#: ui/properties.glade.h:6
-#, fuzzy
-msgid "Mail Notification Properties"
-msgstr "Иконка входящих сообщений"
+msgid "General"
+msgstr ""
#: ui/properties.glade.h:7
-msgid "The amount of time to wait between mail checks"
+msgid "Hori_zontal offset:"
msgstr ""
#: ui/properties.glade.h:8
-msgid "The command to run when new mail arrives"
-msgstr ""
+#, fuzzy
+msgid "Mail Notification Properties"
+msgstr "Иконка входящих сообщений"
#: ui/properties.glade.h:9
-#, fuzzy
-msgid "The command to run when the icon is double-clicked"
+msgid "Mail Summary Popup"
msgstr ""
-"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
#: ui/properties.glade.h:10
-msgid "When _new mail arrives:"
+msgid "Mailboxes"
msgstr ""
#: ui/properties.glade.h:11
-msgid "When double-click_ed:"
+msgid "P_osition:"
msgstr ""
#: ui/properties.glade.h:12
-msgid "Whether the status icon should blink on errors or not"
+msgid "The amount of time to wait before closing the mail summary popup"
msgstr ""
#: ui/properties.glade.h:13
-msgid "Whether to run a command when new mail arrives or not"
+msgid "The amount of time to wait between mail checks"
msgstr ""
#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr ""
+
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr ""
+
+#: ui/properties.glade.h:18
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr ""
+
+#: ui/properties.glade.h:19
#, fuzzy
-msgid "Whether to run a command when the icon is double-clicked or not"
+msgid "Whether to display the mail summary popup when new mail arrives or not"
msgstr ""
"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
-#: ui/properties.glade.h:15
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr ""
+
+#: ui/properties.glade.h:21
msgid ""
"Whether to start Mail Notification when you log into your GNOME session or "
"not"
msgstr ""
-#: ui/properties.glade.h:16
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
msgid "_Blink on errors"
msgstr ""
-#: ui/properties.glade.h:17
+#: ui/properties.glade.h:24
msgid "_Delay between mail checks:"
msgstr ""
-#: ui/properties.glade.h:18
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr ""
+"Иконка в области уведомления панели, уведомляющая о приходе новой почты."
+
+#: ui/properties.glade.h:27
#, fuzzy
msgid "_Start Mail Notification on GNOME login"
msgstr "Иконка входящих сообщений"
-#: ui/properties.glade.h:19
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
msgid "minutes"
msgstr ""
-#: ui/properties.glade.h:20
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
msgid "seconds"
msgstr ""
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr ""
+
#: ui/welcome.glade.h:1
msgid ""
"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
diff --git a/po/sr.gmo b/po/sr.gmo
Binary files differ.
diff --git a/po/sr.po b/po/sr.po
@@ -0,0 +1,1542 @@
+# Serbian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Filip Miletic <filmil@gmail.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 0.6.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-09-30 02:54+0200\n"
+"Last-Translator: Филип Милетић <filmil@gmail.com>\n"
+"Language-Team: Serbian (sr) <gnu@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Дојава приспећа поште"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Фабрика ѕа дојаву приспећа поште"
+
+#: data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+msgstr "Подеси дојаву поште"
+
+#: data/mail-notification-properties.desktop.in.h:2
+#: data/mail-notification.desktop.in.h:2
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
+msgid "Mail Notification"
+msgstr "Дојава поште"
+
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Обавести када стигне нова пошта"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Трепери ако дође до грешке"
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Размак између две провере (минути)"
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Размак између две провере (секунде)."
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Отисци проверених X509 сертификата"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Has already been run"
+msgstr "Већ је покренут"
+
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Висина прозора са поставкама"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Height of properties dialog"
+msgstr "Висина прозора са поставкама"
+
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
+msgstr "Списак сандучића"
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr "Минута између две провере"
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Изврши када пошта стигне"
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr "Покрени команду када стигне нова пошта"
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr "Секунди између две провере"
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Пауза између две узастопне провере"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Пауза између две узастопне провере"
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr "Покрени ову команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Висина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr "Висина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr "Списак сандучића који се прате."
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"Списак проверених SSL/TLS сервера (рачунар:порт) који немају X509 сертификат."
+
+#: data/mail-notification.schemas.in.h:28
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr "Списак проверених X509 сертификата, представљених MD5 отиском."
+
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Ширина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:33
+msgid "The width of the properties dialog in pixels."
+msgstr "Ширина прозора са поставкама изражена у тачкама."
+
+#: data/mail-notification.schemas.in.h:34
+msgid "Trusted servers list"
+msgstr "Списак проверених сервера"
+
+#: data/mail-notification.schemas.in.h:35
+msgid "Whether Mail Notification has already been run or not."
+msgstr "Да ли је програм покретан пре или није."
+
+#: data/mail-notification.schemas.in.h:36
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Да ли сличица треба да трепери ако дође до грешке или не."
+
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Да ли треба покренути неку команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Да ли треба покренути неку команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Да ли треба покренути неку команду када стигне нова пошта."
+
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Ширина прозора са поставкама"
+
+#: data/mail-notification.schemas.in.h:42
+msgid "Width of properties dialog"
+msgstr "Ширина прозора са поставкама"
+
+#: data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Нова пошта"
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr "Оријентација"
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr "Оријентација обавештајне зоне."
+
+#: src/mn-about-dialog.gob:43
+msgid "A Mail Notification Icon"
+msgstr "Сличица за дојаву приспећа поште"
+
+# The email of the translator goes here
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Филип Милетић <filmil@gmail.com>"
+
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">сам пронађи</span>"
+
+#: src/mn-autodetect-mailbox-properties.gob:68
+msgid "_Location:"
+msgstr "_Место:"
+
+#: src/mn-autodetect-mailbox-properties.gob:74
+msgid "_Browse..."
+msgstr "_Прегледај..."
+
+#: src/mn-autodetect-mailbox-properties.gob:81
+msgid "The URI of the mailbox"
+msgstr "URI ознака поштанског сандучега"
+
+#: src/mn-autodetect-mailbox-properties.gob:118
+msgid "Select a File or Folder"
+msgstr "Изаберите датотеку или директоријум"
+
+#: src/mn-blinking-image.gob:32
+msgid "Whether the image is blinking or not"
+msgstr "Да ли слика трепери или не"
+
+#: src/mn-client-session.c:229
+#, c-format
+msgid "resolving %s"
+msgstr "проналазим %s"
+
+#: src/mn-client-session.c:239
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "Није могуће пронаћи %s: %s"
+
+#: src/mn-client-session.c:276
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: ова врста адресе није подржана"
+
+#: src/mn-client-session.c:283
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: није могуће направити утичницу: %s"
+
+#: src/mn-client-session.c:287
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "повезујем се са %s (%s) порт %i"
+
+#: src/mn-client-session.c:290
+#, c-format
+msgid "unable to connect: %s"
+msgstr "није могуће повезати се са: %s"
+
+#: src/mn-client-session.c:295
+msgid "connected successfully"
+msgstr "повезивање је успело"
+
+#. if reached, we couldn't find a working address
+#: src/mn-client-session.c:301
+#, c-format
+msgid "unable to connect to %s"
+msgstr "није могуће повезати се са %s"
+
+#: src/mn-client-session.c:317
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "није могуће покренути OpenSSL библиотеку: %s"
+
+#: src/mn-client-session.c:325
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "није могуће направити SSL/TLS објекат: %s"
+
+#: src/mn-client-session.c:331
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "није могуће поставити SSL/TLS опис за датотеку: %s"
+
+#: src/mn-client-session.c:337
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "није могуће обавити SSL/TLS контакт: %s"
+
+#: src/mn-client-session.c:343
+msgid "untrusted server"
+msgstr "непроверен сервер"
+
+#: src/mn-client-session.c:347
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "SSL/TLS слој је покренут (%s, %s %i-бит)"
+
+#: src/mn-client-session.c:394
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, отисак: %s"
+
+#: src/mn-client-session.c:423
+msgid "missing certificate"
+msgstr "недостаје сертификат"
+
+#: src/mn-client-session.c:449
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+"Програм за дојаву приспећа поште не може да провери \"%s\" (%s). То може да "
+"значи да неко пресреће вашу преписку како би дошао до ваших поверљивих "
+"података.\n"
+"\n"
+"На сервер се треба повезивати само ако сте сигурни да се заиста повезујете "
+"са \"%s\". Ако одлучите да се повежете на сервер, ова порука неће поново "
+"бити приказана."
+
+#: src/mn-client-session.c:466
+msgid "Connect to untrusted server?"
+msgstr "Да ли да се повежем на непроверени сервер?"
+
+#: src/mn-client-session.c:471
+msgid "Co_nnect"
+msgstr "_Повежи се"
+
+#: src/mn-client-session.c:527
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "одговор \"%s\" није исправан у тренутно важећем контексту"
+
+#: src/mn-client-session.c:553
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "није могуће обрадити одговор \"%s\""
+
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "Није могуће читање са сервера: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "Није могуће читање са сервера: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "Не могу се декодовати подаци путем SASL: %s"
+
+#: src/mn-client-session.c:746
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr "није могуће кодирати податке уз помоћ SASL: %s"
+
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "није могућ упис на сервер: %s"
+
+#: src/mn-client-session.c:782
+msgid "unable to write to server: EOF"
+msgstr "није могућ упис на сервер: EOF"
+
+#: src/mn-client-session.c:814
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "није могуће кодирати Base64: %s"
+
+#: src/mn-client-session.c:917
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "не може се покренути SASL библиотека: %s"
+
+#: src/mn-client-session.c:926
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "не може да се добави локална адреса утичнице: %s"
+
+#: src/mn-client-session.c:932
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr "не може да се добави удаљена адреса утичнице: %s"
+
+#: src/mn-client-session.c:966
+#, c-format
+msgid "warning: unable to set SASL security properties: %s"
+msgstr "упозорење: није могуће поставити SASL сигурносне поставке %s"
+
+#: src/mn-client-session.c:1005
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr "не може се покренути SASL пријава: SASL тражи податке које немамо"
+
+#: src/mn-client-session.c:1009
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "не може се покренути SASL пријава: %s"
+
+#: src/mn-client-session.c:1013
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "није могуће успоставити SASL везу: %s"
+
+#: src/mn-client-session.c:1063
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr "SASL је тражио нама непознате податке, обустављам SASL пријаву"
+
+#: src/mn-client-session.c:1067
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, обустављам SASL пријаву"
+
+#. compliance error
+#: src/mn-client-session.c:1072
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "није могуће декодовати Base64 улаз са сервера: %s"
+
+#: src/mn-client-session.c:1075
+msgid ""
+"the server sent a SASL challenge, but there was a pending initial SASL "
+"client response"
+msgstr ""
+"сервер је започео SASL разговор, али одговор од клијента стигао пре тога"
+
+#: src/mn-client-session.c:1089
+msgid ""
+"the server did not send a SASL challenge, but there was no pending initial "
+"SASL client response"
+msgstr ""
+"сервер није послао SASL разговор, али није било ни одговора од клијента."
+
+#: src/mn-client-session.c:1112
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr "SASL сигурносни слој нивоа снаге %i је успостављен"
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: src/mn-client-session.c:1117
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "не могу да прочитам поставку SASL_MAXOUTBUF: %s"
+
+#: src/mn-client-session.c:1123
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "упозорење: не могу да прочитам поставку SASL_SSF: %s"
+
+#: src/mn-conf.c:123
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "рекурзивно поништавам %s"
+
+#: src/mn-conf.c:127
+msgid "syncing the GConf database"
+msgstr "усклађујем GConf базу података"
+
+#: src/mn-conf.c:130
+msgid "completed"
+msgstr "урађено"
+
+#: src/mn-gmail-mailbox-properties.gob:79
+msgid "Your Gmail username"
+msgstr "Ваше име на сервису Gmail"
+
+#: src/mn-gmail-mailbox-properties.gob:80
+msgid "Your Gmail password"
+msgstr "Ваша лозинка на сервису Gmail"
+
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "није могуће обрадити одговор \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr "пријава у току"
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "пријава није успела"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "не могу да преузмем податке: %s"
+
+#: src/mn-gmail-mailbox.gob:409
+msgid "successfully logged in"
+msgstr "пријава је успела"
+
+#: src/mn-gmail-mailbox.gob:487
+msgid "searching for unread mail"
+msgstr "тражим нову пошту"
+
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "тражим нову пошту"
+
+#: src/mn-gmail-mailbox.gob:604
+msgid "unable to parse Gmail data"
+msgstr "не могу да обрадим податке са Gmail-a"
+
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "Није могуће пронаћи %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "није могућ упис на сервер: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "Није могуће пронаћи %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "није могуће мотрити на %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "није могуће затворити директоријум: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
+msgid "Mailbox:"
+msgstr "Сандуче:"
+
+#: src/mn-imap-mailbox-properties.gob:98
+msgid "in_box"
+msgstr "in_box"
+
+#: src/mn-imap-mailbox-properties.gob:109
+msgid "oth_er:"
+msgstr "_друго:"
+
+#: src/mn-imap-mailbox-properties.gob:124
+msgid "The hostname or IP address of the IMAP server"
+msgstr "Име или IP број IMAP сервера"
+
+#: src/mn-imap-mailbox-properties.gob:125
+msgid "Your username on the IMAP server"
+msgstr "Ваше име на IMAP серверу"
+
+#: src/mn-imap-mailbox-properties.gob:126
+msgid "Your password on the IMAP server"
+msgstr "Ваша лозинка на IMAP серверу"
+
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
+msgid "The port number of the IMAP server"
+msgstr "Број порта на IMAP серверу"
+
+#: src/mn-imap-mailbox-properties.gob:129
+msgid "The mailbox name"
+msgstr "Име сандучета"
+
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
+msgid "SSL/TLS support has not been compiled in"
+msgstr "Подршка за SSL/TLS није уграђена"
+
+#: src/mn-imap-mailbox.gob:203
+msgid "server did not send capabilities"
+msgstr "сервер није обавестио о својим могућностима"
+
+#: src/mn-imap-mailbox.gob:318
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "сервер је рекао LOGINDISABLED, не користим LOGIN пријаву"
+
+#: src/mn-imap-mailbox.gob:319
+msgid "unable to login"
+msgstr "пријава није могућа"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "сервер није послао статус"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "сервер није послао статус"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "није могуће повезати се са: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
+msgid "server did not send status"
+msgstr "сервер није послао статус"
+
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
+msgid "unknown server error"
+msgstr "непозната грешка на серверу"
+
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
+msgid "server does not support in-band SSL/TLS"
+msgstr "сервер не подржава заштиту путем SSL/TLS"
+
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"изабран је механизам за пријаву који користи SASL али подршка за SASL није "
+"уграђена у програм"
+
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "непознат механизам за пријаву \"%s\""
+
+#: src/mn-imap-mailbox.gob:972
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "повратак на IMAP LOGIN пријаву"
+
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
+msgid "authentication failed"
+msgstr "пријава није успела"
+
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+msgid "_Update"
+msgstr "_Освежи"
+
+#: src/mn-mail-icon.gob:90
+msgid "R_emove From Notification Area"
+msgstr "_Уклони са обавештајне зоне"
+
+#: src/mn-mailbox-properties-dialog.c:109
+msgid "Add a Mailbox"
+msgstr "Додај сандуче"
+
+#: src/mn-mailbox-properties-dialog.c:328
+#, c-format
+msgid "%s Properties"
+msgstr "Поставке за %s"
+
+#: src/mn-mailbox-properties-util.c:77
+msgid "_Username:"
+msgstr "_Кор.име:"
+
+#: src/mn-mailbox-properties-util.c:87
+msgid "_Password:"
+msgstr "_Лозинка:"
+
+#: src/mn-mailbox-properties-util.c:154
+msgid "Connection type:"
+msgstr "Врста везе:"
+
+#: src/mn-mailbox-properties-util.c:161
+msgid "Port:"
+msgstr "Порт:"
+
+#: src/mn-mailbox-properties-util.c:189
+msgid "_Authentication mechanism:"
+msgstr "_Начин пријаве:"
+
+#: src/mn-mailbox-properties.c:63
+msgid "Label"
+msgstr "Ознака"
+
+#: src/mn-mailbox-properties.c:64
+msgid "The marked up text to show in the type combo box"
+msgstr "Означени текст који се појављује у ознаци типа"
+
+#: src/mn-mailbox-properties.c:69
+msgid "Size group"
+msgstr "Величина групе"
+
+#: src/mn-mailbox-properties.c:70
+msgid "A GtkSizeGroup for aligning control labels"
+msgstr "GtkSizeGroup за уравнање контролних ознака"
+
+#: src/mn-mailbox-properties.c:75
+msgid "Complete"
+msgstr "Готово"
+
+#: src/mn-mailbox-properties.c:76
+msgid "Whether the properties are completely filled or not"
+msgstr "Да ли су поставке сасвим попуњене или не"
+
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+msgid "Mailbox"
+msgstr "Сандуче"
+
+#. format column
+#: src/mn-mailbox-view.gob:279
+msgid "Format"
+msgstr "Формат"
+
+#: src/mn-mailbox-view.gob:569
+msgid "Unable to add mailbox"
+msgstr "Није могуће додати сандуче"
+
+#: src/mn-mailbox-view.gob:569
+msgid "The mailbox is already in the list."
+msgstr "Сандуче је већ у списку."
+
+#: src/mn-mailbox.gob:133
+msgid "The mailbox URI"
+msgstr "URI ознака за сандуче"
+
+#: src/mn-mailbox.gob:144
+msgid "The mailbox human-readable name"
+msgstr "Име сандучета"
+
+#: src/mn-mailbox.gob:148
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr "Да ли се ово сандуче ручно проверава или не"
+
+#: src/mn-mailbox.gob:153
+msgid "Whether the mailbox has new mail or not"
+msgstr "Да ли у сандучету стоји нова пошта или не"
+
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
+msgid "The mailbox error, if any"
+msgstr "Грешка у приступу сандучету, ако постоји"
+
+#: src/mn-mailbox.gob:310
+msgid "does not exist"
+msgstr "не постоји"
+
+#: src/mn-mailbox.gob:342
+msgid "unknown format"
+msgstr "непознат формат"
+
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Није могуће наместити непосредну дојаву нове поште за један или више "
+"сандучића. %s"
+
+#: src/mn-mailbox.gob:426
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:437
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+"Пошто нема друге могућности, биће проверавани сваки %i минут (ово кашњење се "
+"може променити из прозора са поставкама)"
+msgstr[1] ""
+"Пошто нема друге могућности, биће проверавани сваких %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+msgstr[2] ""
+"Пошто нема друге могућности, биће проверавани сваких %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+
+#: src/mn-mailbox.gob:448
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr[0] ""
+"Пошто нема друге могућности, биће проверавани на око %i минут (ово кашњење "
+"се може променити из прозора са поставкама)"
+msgstr[1] ""
+"Пошто нема друге могућности, биће проверавани на око %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+msgstr[2] ""
+"Пошто нема друге могућности, биће проверавани на око %i минута (ово кашњење "
+"се може променити из прозора са поставкама)"
+
+#: src/mn-mailbox.gob:464
+msgid "A monitoring error has occurred"
+msgstr "Дошло је до грешке при мотрењу"
+
+#: src/mn-mailbox.gob:465
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Није могуће наместити непосредну дојаву нове поште за један или више "
+"сандучића. %s"
+
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Да ли се ово сандуче ручно проверава или не"
+
+#: src/mn-mailboxes.gob:266
+#, c-format
+msgid "%s is unsupported: %s"
+msgstr "%s није подржан: %s"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has new mail"
+msgstr "Сандуче %s има нову пошту"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has no new mail"
+msgstr "Сандуче %s нема нову пошту"
+
+#: src/mn-mailboxes.gob:323
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s је дојавио грешку: %s"
+
+#: src/mn-maildir-mailbox.gob:119
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "није могуће отворити директоријум \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:161
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "није могуће затворити директоријум \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:164
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "грешка при читању директоријума \"new\": %s"
+
+#: src/mn-main.c:97
+#, c-format
+msgid "Compiled-in mailbox backends: %s\n"
+msgstr "Програм уме да чита сандучиће у форматима: %s\n"
+
+#: src/mn-main.c:114
+#, c-format
+msgid "Compiled-in features: %s\n"
+msgstr "Уграђене могућности: %s\n"
+
+#: src/mn-main.c:166
+msgid "Enable informational output"
+msgstr "Дозволи речитији излаз"
+
+#: src/mn-main.c:175
+msgid "List compiled-in features and exit"
+msgstr "Испиши уграђене могућности и изађи"
+
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Прикажи податке о програму"
+
+#: src/mn-main.c:193
+msgid "Display the properties dialog"
+msgstr "Прикажи прозор са поставкама"
+
+#: src/mn-main.c:202
+msgid "Display the about dialog"
+msgstr "Прикажи податке о програму"
+
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
+msgid "Update the mail status"
+msgstr "Освежи податке о пошти"
+
+#: src/mn-main.c:229
+msgid "Report the mail status"
+msgstr "Провери пошту"
+
+#: src/mn-main.c:238
+msgid "Unset obsolete GConf configuration and exit"
+msgstr "Поништи застарела GConf подешавања и изађи"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: src/mn-main.c:264
+msgid "multi-threading is not available"
+msgstr "вишенитни рад није подржан"
+
+#: src/mn-main.c:309
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Бонобо није успео да пронађе објекат за аутоматизацију. Проверите "
+"инсталацију програма за дојаву поште. (Прим. прев: услед грешке у програму "
+"Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
+"одјавите и поново пријавите на систем да би све почело да ради)"
+
+#: src/mn-main.c:314
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Није могуће покренути библиотеку GnomeVFS."
+
+#: src/mn-main.c:350
+msgid "updating the mail status"
+msgstr "Проверавам пошту"
+
+#: src/mn-main.c:368
+msgid "Mail Notification is already running"
+msgstr "Програм за дојаву поште је већ покренут."
+
+#: src/mn-main.c:375
+msgid ""
+"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
+"Please check your Mail Notification installation."
+msgstr ""
+"Бонобо није успео да пронађе објекат за аутоматизацију. Проверите "
+"инсталацију програма за дојаву поште. (Прим. прев: услед грешке у програму "
+"Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
+"одјавите и поново пријавите на систем да би све почело да ради)"
+
+#: src/mn-main.c:379
+msgid ""
+"Bonobo was unable to register the automation server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Бонобо није успео да пронађе објекат за аутоматизацију. Проверите "
+"инсталацију програма за дојаву поште. (Прим. прев: услед грешке у програму "
+"Бонобо у Гному 2.6, када инсталирате програм за обавештења, треба да се "
+"одјавите и поново пријавите на систем да би све почело да ради)"
+
+#: src/mn-mbox-mailbox.gob:221
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr "грешка при читању сандучета: %s"
+
+#: src/mn-mbox-mailbox.gob:230
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "није могуће отворити сандуче: %s"
+
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "није могуће обрадити одговор \"%s\""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr "грешка при читању датотеке .mh_sequences: %s"
+
+#: src/mn-mh-mailbox.gob:196
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr "није могуће отворити датотеку .mh_sequences: %s"
+
+#: src/mn-pending-mailbox.gob:35
+msgid "detecting"
+msgstr "истражујем"
+
+#: src/mn-pi-mailbox-properties.gob:76
+msgid "_Hostname:"
+msgstr "_Рачунар:"
+
+#: src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Детаљи"
+
+#: src/mn-pi-mailbox-properties.gob:106
+msgid "sta_ndard"
+msgstr "_стандард"
+
+#: src/mn-pi-mailbox-properties.gob:116
+msgid "_in-band SSL/TLS"
+msgstr "_уграђени SSL/TLS"
+
+#: src/mn-pi-mailbox-properties.gob:126
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS на посебном порту"
+
+#: src/mn-pop3-mailbox-properties.gob:86
+msgid "The hostname or IP address of the POP3 server"
+msgstr "Име или IP број POP3 сервера"
+
+#: src/mn-pop3-mailbox-properties.gob:87
+msgid "Your username on the POP3 server"
+msgstr "Ваше име на POP3 серверу"
+
+#: src/mn-pop3-mailbox-properties.gob:88
+msgid "Your password on the POP3 server"
+msgstr "Ваша лозинка на POP3 серверу"
+
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
+msgid "The port number of the POP3 server"
+msgstr "Број порта на POP3 серверу"
+
+#: src/mn-pop3-mailbox.gob:271
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "параметри за могућност LOGIN-DELAY нису исправно постављени"
+
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "непозната грешка на серверу"
+
+#: src/mn-pop3-mailbox.gob:666
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] "тражен је застој при пријави, паузирам %i секунду"
+msgstr[1] "тражен је застој при пријави, паузирам %i секундe"
+msgstr[2] "тражен је застој при пријави, паузирам %i секунди"
+
+#: src/mn-pop3-mailbox.gob:831
+msgid "server does not support APOP authentication"
+msgstr "сервер не подржава пријаву коришћењем механизма APOP"
+
+#: src/mn-pop3-mailbox.gob:859
+msgid "falling back to APOP authentication"
+msgstr "прелазим на APOP пријаву"
+
+#: src/mn-pop3-mailbox.gob:864
+msgid "falling back to USER/PASS authentication"
+msgstr "прелазим на пријаву помоћу имена и лозинке"
+
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Готово"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
+msgid "No mailbox selected."
+msgstr "Ниједно сандуче није изабрано."
+
+#: src/mn-properties.c:245
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "Изабрано %i сандуче"
+msgstr[1] "Изабрана %i сандучета"
+msgstr[2] "Изабрано %i сандучета"
+
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Имате нову пошту."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Дошло је до грешке у командама"
+
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Није могуће извршити команду за нову пошту: %s."
+
+#: src/mn-shell.gob:270
+msgid "The following mailbox has new mail:\n"
+msgid_plural "The following mailboxes have new mail:\n"
+msgstr[0] "Сандуче са новом поштом:\n"
+msgstr[1] "Сандучићи са новом поштом:\n"
+msgstr[2] "Сандучићи са новом поштом:\n"
+
+#: src/mn-shell.gob:274
+msgid "You have no new mail."
+msgstr "Нема поште."
+
+#: src/mn-shell.gob:277
+msgid "The following mailbox reported an error:\n"
+msgid_plural "The following mailboxes reported an error:\n"
+msgstr[0] "Ово сандуче има грешку:\n"
+msgstr[1] "Ови сандучићи имају грешку:\n"
+msgstr[2] "Ови сандучићи имају грешку:\n"
+
+#: src/mn-shell.gob:282
+msgid "The following mailbox is unsupported:\n"
+msgid_plural "The following mailboxes are unsupported:\n"
+msgstr[0] "Ово сандуче није подржано:\n"
+msgstr[1] "Ови сандучићи нису подржани:\n"
+msgstr[2] "Ови сандучићи нису подржани:\n"
+
+#: src/mn-ssl.c:79
+msgid "unknown SSL/TLS error"
+msgstr "непозната грешка у SSL/TLS"
+
+#: src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Изабери _све"
+
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "није могуће отворити директоријум: %s"
+
+#: src/mn-sylpheed-mailbox.gob:180
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "није могуће затворити директоријум: %s"
+
+#: src/mn-sylpheed-mailbox.gob:183
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "грешка при читању директоријума: %s"
+
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
+msgid "System Mailbox"
+msgstr "Локално сандуче"
+
+#: src/mn-system-mailbox-properties.gob:57
+#, c-format
+msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgstr "Користи се локално сандуче (<span weight=\"bold\">%s</span>)."
+
+#: src/mn-system-mailbox-properties.gob:64
+msgid ""
+"The location of your system mailbox could not be detected. Please set the "
+"MAIL environment variable."
+msgstr ""
+"Програм није успео да пронађе локално сандуче. Поставите променљиву MAIL да "
+"показује на њега."
+
+#: src/mn-unsupported-mailbox.gob:33
+msgid "The reason why the mailbox is unsupported"
+msgstr "Разлог зашто сандуче није подржано"
+
+#: src/mn-unsupported-mailbox.gob:40
+msgid "unsupported"
+msgstr "није подржано"
+
+#: src/mn-util.c:233
+#, c-format
+msgid "error loading image: %s"
+msgstr "грешка при учитавању слике: %s"
+
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "елемент %s није пронађен у сучељу %s"
+
+#: src/mn-util.c:385
+msgid "received an invalid URI list"
+msgstr "примљен је неисправан списак URI ознака"
+
+#: src/mn-util.c:421
+msgid "received an invalid Mozilla URL"
+msgstr "примљен је неисправан Мозилин URL"
+
+#: src/mn-util.c:514
+msgid "Unable to display help"
+msgstr "Није могуће приказати помоћ"
+
+#: src/mn-util.c:528
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Није могуће покренути нит: %s."
+
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Дошло је до кобне грешке у програму за дојаву поште"
+
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "није могуће повезати се са %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1
+msgid "_Mailbox type:"
+msgstr "_Врста сандучета:"
+
+#: ui/properties.glade.h:1
+msgid " "
+msgstr " "
+
+#: ui/properties.glade.h:2
+msgid "*"
+msgstr "*"
+
+#: ui/properties.glade.h:3
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Опште</span>"
+
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Сандучићи</span>"
+
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Наредбе</span>"
+
+#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
+msgid "Mail Notification Properties"
+msgstr "Поставке за дојаву"
+
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Сандуче"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Место:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Пауза између две узастопне провере"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "Пауза између две узастопне провере"
+
+#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr "Наредба која се покреће када стиже нова пошта"
+
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Да ли статусна сличица трепери при грешкама или не"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Да ли у сандучету стоји нова пошта или не"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Да ли се покреће команда када стигне пошта или не"
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr "Да ли се покреће команда када стигне пошта или не"
+
+#: ui/properties.glade.h:21
+msgid ""
+"Whether to start Mail Notification when you log into your GNOME session or "
+"not"
+msgstr "Да ли покренути дојаву поште када се пријавите на систем"
+
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Трепери при грешкама"
+
+#: ui/properties.glade.h:24
+msgid "_Delay between mail checks:"
+msgstr "_Пауза између провера:"
+
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Покрени команду када стигне нова пошта"
+
+#: ui/properties.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "Покрени _дојаву при пријави"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
+msgid "minutes"
+msgstr "минута"
+
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
+msgid "seconds"
+msgstr "секунди"
+
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
+#, fuzzy
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Сандучићи</span>"
+
+#: ui/welcome.glade.h:1
+msgid ""
+"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+"\n"
+"Mail Notification has been loaded successfully.\n"
+"\n"
+"Since this is the first time you run Mail Notification, you might want to "
+"configure it.\n"
+"\n"
+"Note: this message will not be shown anymore. To configure Mail Notification "
+"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
+"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
+"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
+"More Preferences → Mail Notification</span>)."
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Прво покретање</span>\n"
+"\n"
+"Програм за дојаву поште је успешно покренут.\n"
+"\n"
+"Пошто сте програм за дојаву поште први пут покренули, вероватно желите и да "
+"га подесите.\n"
+"\n"
+"Пажња: ова порука се убудуће неће приказивати. Да бисте подесили дојаву "
+"поште, изаберите ставку Програми <span weight=\"bold\">Програми</span> → "
+"<span weight=\"bold\">Поставке окружења</span> → <span weight=\"bold"
+"\">Дојава поште</span> (или на неким системима <span weight=\"bold"
+"\">Програми → Поставке → Још поставки → Дојава поште</span>)."
+
+#: ui/welcome.glade.h:8
+msgid "_Configure Mail Notification"
+msgstr "_Подеси дојаву поште"
+
+#: ui/welcome.glade.h:9
+msgid "_Skip configuration"
+msgstr "П_рескочи подешавања"
+
+#~ msgid "Double-clicked command"
+#~ msgstr "Изврши на двоструки клик"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Изврши команду при двоструком клику на икону"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr "Покрени ову команду при двоструком клику на икону."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Да ли треба покренути неку команду када при двоструком клику на икону."
+
+#~ msgid "_Run %s"
+#~ msgstr "_Покрени %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "П_окрени подразумевано"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "Дошло је до грешке у командама"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Није могуће извршити команду на двоструки клик: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr "Наредба која се покреће при двоструком клику"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Када _стигне нова пошта:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "При _двоструком клику:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Да ли се покреће команда при двоструком клику или не"
diff --git a/po/sr@Latn.gmo b/po/sr@Latn.gmo
Binary files differ.
diff --git a/po/sr@Latn.po b/po/sr@Latn.po
@@ -0,0 +1,1542 @@
+# Serbian translations for mail-notification.
+# Copyright (c) 2003, 2004 Jean-Yves Lefort.
+#
+# This file is distributed under the same license as the
+# mail-notification package.
+#
+# Filip Miletic <filmil@gmail.com>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: mail-notification 0.6.2\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2004-10-06 19:31+0200\n"
+"PO-Revision-Date: 2004-09-30 02:54+0200\n"
+"Last-Translator: Filip Miletić <filmil@gmail.com>\n"
+"Language-Team: Serbian (sr) <gnu@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
+"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:1
+msgid "Mail Notification automation"
+msgstr "Dojava prispeća pošte"
+
+#: data/GNOME_MailNotification_Automation.server.in.in.h:2
+msgid "Mail Notification automation factory"
+msgstr "Fabrika ѕa dojavu prispeća pošte"
+
+#: data/mail-notification-properties.desktop.in.h:1
+msgid "Configure Mail Notification"
+msgstr "Podesi dojavu pošte"
+
+#: data/mail-notification-properties.desktop.in.h:2
+#: data/mail-notification.desktop.in.h:2
+#: data/mail-notification.soundlist.in.h:1 src/mn-about-dialog.gob:40
+#: src/mn-mail-icon.gob:163 src/mn-main.c:272
+msgid "Mail Notification"
+msgstr "Dojava pošte"
+
+#: data/mail-notification.desktop.in.h:1
+msgid "Get notified when new mail arrives"
+msgstr "Obavesti kada stigne nova pošta"
+
+#: data/mail-notification.schemas.in.h:1
+msgid "Automatically close the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:2
+msgid "Blink on errors"
+msgstr "Treperi ako dođe do greške"
+
+#: data/mail-notification.schemas.in.h:3
+msgid "Delay between mail checks (minutes part)."
+msgstr "Razmak između dve provere (minuti)"
+
+#: data/mail-notification.schemas.in.h:4
+msgid "Delay between mail checks (seconds part)."
+msgstr "Razmak između dve provere (sekunde)."
+
+#: data/mail-notification.schemas.in.h:5
+msgid "Do not show the immediate notification error dialog"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:6
+msgid "Enable mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:7
+msgid "Fingerprints of trusted X509 certificates"
+msgstr "Otisci proverenih X509 sertifikata"
+
+#: data/mail-notification.schemas.in.h:8
+msgid "Has already been run"
+msgstr "Već je pokrenut"
+
+#: data/mail-notification.schemas.in.h:9
+#, fuzzy
+msgid "Height of mail summary dialog"
+msgstr "Visina prozora sa postavkama"
+
+#: data/mail-notification.schemas.in.h:10
+msgid "Height of properties dialog"
+msgstr "Visina prozora sa postavkama"
+
+#: data/mail-notification.schemas.in.h:11
+msgid "Mail summary popup horizontal offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:12
+msgid "Mail summary popup position"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:13
+msgid "Mail summary popup vertical offset"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:14
+#, fuzzy
+msgid "Mailbox list"
+msgstr "Spisak sandučića"
+
+#: data/mail-notification.schemas.in.h:15
+msgid "Minutes between mail checks"
+msgstr "Minuta između dve provere"
+
+#: data/mail-notification.schemas.in.h:16
+msgid "Minutes to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:17
+msgid "New mail command"
+msgstr "Izvrši kada pošta stigne"
+
+#: data/mail-notification.schemas.in.h:18
+msgid "Run a command when new mail arrives"
+msgstr "Pokreni komandu kada stigne nova pošta"
+
+#: data/mail-notification.schemas.in.h:19
+msgid "Seconds between mail checks"
+msgstr "Sekundi između dve provere"
+
+#: data/mail-notification.schemas.in.h:20
+msgid "Seconds to wait before closing the mail summary popup"
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:21
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (minutes "
+"part)."
+msgstr "Pauza između dve uzastopne provere"
+
+#: data/mail-notification.schemas.in.h:22
+#, fuzzy
+msgid ""
+"The amount of time to wait before closing the mail summary popup (seconds "
+"part)."
+msgstr "Pauza između dve uzastopne provere"
+
+#: data/mail-notification.schemas.in.h:23
+msgid "The command to run when new mail arrives."
+msgstr "Pokreni ovu komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:24
+#, fuzzy
+msgid "The height of the mail summary dialog in pixels."
+msgstr "Visina prozora sa postavkama izražena u tačkama."
+
+#: data/mail-notification.schemas.in.h:25
+msgid "The height of the properties dialog in pixels."
+msgstr "Visina prozora sa postavkama izražena u tačkama."
+
+#: data/mail-notification.schemas.in.h:26
+msgid "The list of mailboxes to monitor."
+msgstr "Spisak sandučića koji se prate."
+
+#: data/mail-notification.schemas.in.h:27
+msgid ""
+"The list of trusted SSL/TLS servers (hostname:port) lacking a X509 "
+"certificate."
+msgstr ""
+"Spisak proverenih SSL/TLS servera (računar:port) koji nemaju X509 sertifikat."
+
+#: data/mail-notification.schemas.in.h:28
+msgid ""
+"The list of trusted X509 certificates, represented by their MD5 fingerprint."
+msgstr "Spisak proverenih X509 sertifikata, predstavljenih MD5 otiskom."
+
+#: data/mail-notification.schemas.in.h:29
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:30
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:31
+msgid ""
+"The position of the mail summary popup. Must be \"top-left\", \"top-right\", "
+"\"bottom-left\" or \"bottom-right\"."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:32
+#, fuzzy
+msgid "The width of the mail summary dialog in pixels."
+msgstr "Širina prozora sa postavkama izražena u tačkama."
+
+#: data/mail-notification.schemas.in.h:33
+msgid "The width of the properties dialog in pixels."
+msgstr "Širina prozora sa postavkama izražena u tačkama."
+
+#: data/mail-notification.schemas.in.h:34
+msgid "Trusted servers list"
+msgstr "Spisak proverenih servera"
+
+#: data/mail-notification.schemas.in.h:35
+msgid "Whether Mail Notification has already been run or not."
+msgstr "Da li je program pokretan pre ili nije."
+
+#: data/mail-notification.schemas.in.h:36
+msgid "Whether the status icon should blink on errors or not."
+msgstr "Da li sličica treba da treperi ako dođe do greške ili ne."
+
+#: data/mail-notification.schemas.in.h:37
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not."
+msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:38
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not."
+msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:39
+msgid ""
+"Whether to prevent the immediate notification error dialog from being "
+"displayed or not."
+msgstr ""
+
+#: data/mail-notification.schemas.in.h:40
+msgid "Whether to run a command when new mail arrives or not."
+msgstr "Da li treba pokrenuti neku komandu kada stigne nova pošta."
+
+#: data/mail-notification.schemas.in.h:41
+#, fuzzy
+msgid "Width of mail summary dialog"
+msgstr "Širina prozora sa postavkama"
+
+#: data/mail-notification.schemas.in.h:42
+msgid "Width of properties dialog"
+msgstr "Širina prozora sa postavkama"
+
+#: data/mail-notification.soundlist.in.h:2
+msgid "New Mail"
+msgstr "Nova pošta"
+
+#: src/eggtrayicon.c:109
+msgid "Orientation"
+msgstr "Orijentacija"
+
+#: src/eggtrayicon.c:110
+msgid "The orientation of the tray."
+msgstr "Orijentacija obaveštajne zone."
+
+#: src/mn-about-dialog.gob:43
+msgid "A Mail Notification Icon"
+msgstr "Sličica za dojavu prispeća pošte"
+
+# The email of the translator goes here
+#. translator: replace with your name and email
+#: src/mn-about-dialog.gob:47
+msgid "Jean-Yves Lefort <jylefort@brutele.be>"
+msgstr "Filip Miletić <filmil@gmail.com>"
+
+#: src/mn-auth-combo-box.gob:101 src/mn-autodetect-mailbox-properties.gob:37
+msgid "<span style=\"italic\">autodetect</span>"
+msgstr "<span style=\"italic\">sam pronađi</span>"
+
+#: src/mn-autodetect-mailbox-properties.gob:68
+msgid "_Location:"
+msgstr "_Mesto:"
+
+#: src/mn-autodetect-mailbox-properties.gob:74
+msgid "_Browse..."
+msgstr "_Pregledaj..."
+
+#: src/mn-autodetect-mailbox-properties.gob:81
+msgid "The URI of the mailbox"
+msgstr "URI oznaka poštanskog sandučega"
+
+#: src/mn-autodetect-mailbox-properties.gob:118
+msgid "Select a File or Folder"
+msgstr "Izaberite datoteku ili direktorijum"
+
+#: src/mn-blinking-image.gob:32
+msgid "Whether the image is blinking or not"
+msgstr "Da li slika treperi ili ne"
+
+#: src/mn-client-session.c:229
+#, c-format
+msgid "resolving %s"
+msgstr "pronalazim %s"
+
+#: src/mn-client-session.c:239
+#, c-format
+msgid "unable to resolve %s: %s"
+msgstr "Nije moguće pronaći %s: %s"
+
+#: src/mn-client-session.c:276
+#, c-format
+msgid "%s: unsupported address family"
+msgstr "%s: ova vrsta adrese nije podržana"
+
+#: src/mn-client-session.c:283
+#, c-format
+msgid "%s: unable to create socket: %s"
+msgstr "%s: nije moguće napraviti utičnicu: %s"
+
+#: src/mn-client-session.c:287
+#, c-format
+msgid "connecting to %s (%s) port %i"
+msgstr "povezujem se sa %s (%s) port %i"
+
+#: src/mn-client-session.c:290
+#, c-format
+msgid "unable to connect: %s"
+msgstr "nije moguće povezati se sa: %s"
+
+#: src/mn-client-session.c:295
+msgid "connected successfully"
+msgstr "povezivanje je uspelo"
+
+#. if reached, we couldn't find a working address
+#: src/mn-client-session.c:301
+#, c-format
+msgid "unable to connect to %s"
+msgstr "nije moguće povezati se sa %s"
+
+#: src/mn-client-session.c:317
+#, c-format
+msgid "unable to initialize the OpenSSL library: %s"
+msgstr "nije moguće pokrenuti OpenSSL biblioteku: %s"
+
+#: src/mn-client-session.c:325
+#, c-format
+msgid "unable to create a SSL/TLS object: %s"
+msgstr "nije moguće napraviti SSL/TLS objekat: %s"
+
+#: src/mn-client-session.c:331
+#, c-format
+msgid "unable to set the SSL/TLS file descriptor: %s"
+msgstr "nije moguće postaviti SSL/TLS opis za datoteku: %s"
+
+#: src/mn-client-session.c:337
+#, c-format
+msgid "unable to perform the SSL/TLS handshake: %s"
+msgstr "nije moguće obaviti SSL/TLS kontakt: %s"
+
+#: src/mn-client-session.c:343
+msgid "untrusted server"
+msgstr "neproveren server"
+
+#: src/mn-client-session.c:347
+#, c-format
+msgid "a SSL/TLS layer is now active (%s, %s %i-bit)"
+msgstr "SSL/TLS sloj je pokrenut (%s, %s %i-bit)"
+
+#: src/mn-client-session.c:394
+#, c-format
+msgid "%s, fingerprint: %s"
+msgstr "%s, otisak: %s"
+
+#: src/mn-client-session.c:423
+msgid "missing certificate"
+msgstr "nedostaje sertifikat"
+
+#: src/mn-client-session.c:449
+#, c-format
+msgid ""
+"Mail Notification was unable to trust \"%s\" (%s). It is possible that "
+"someone is intercepting your communication to obtain your confidential "
+"information.\n"
+"\n"
+"You should only connect to the server if you are certain you are connected "
+"to \"%s\". If you choose to connect to the server, this message will not be "
+"shown again."
+msgstr ""
+"Program za dojavu prispeća pošte ne može da proveri \"%s\" (%s). To može da "
+"znači da neko presreće vašu prepisku kako bi došao do vaših poverljivih "
+"podataka.\n"
+"\n"
+"Na server se treba povezivati samo ako ste sigurni da se zaista povezujete "
+"sa \"%s\". Ako odlučite da se povežete na server, ova poruka neće ponovo "
+"biti prikazana."
+
+#: src/mn-client-session.c:466
+msgid "Connect to untrusted server?"
+msgstr "Da li da se povežem na neprovereni server?"
+
+#: src/mn-client-session.c:471
+msgid "Co_nnect"
+msgstr "_Poveži se"
+
+#: src/mn-client-session.c:527
+#, c-format
+msgid "response \"%s\" is not valid in current context"
+msgstr "odgovor \"%s\" nije ispravan u trenutno važećem kontekstu"
+
+#: src/mn-client-session.c:553
+#, c-format
+msgid "unable to parse response \"%s\""
+msgstr "nije moguće obraditi odgovor \"%s\""
+
+#: src/mn-client-session.c:592 src/mn-client-session.c:599
+#, c-format
+msgid "unable to read from server: %s"
+msgstr "Nije moguće čitanje sa servera: %s"
+
+#: src/mn-client-session.c:597
+msgid "unable to read from server: EOF"
+msgstr "Nije moguće čitanje sa servera: EOF"
+
+#: src/mn-client-session.c:609
+#, c-format
+msgid "unable to decode data using SASL: %s"
+msgstr "Ne mogu se dekodovati podaci putem SASL: %s"
+
+#: src/mn-client-session.c:746
+#, c-format
+msgid "unable to encode data using SASL: %s"
+msgstr "nije moguće kodirati podatke uz pomoć SASL: %s"
+
+#: src/mn-client-session.c:777 src/mn-client-session.c:784
+#, c-format
+msgid "unable to write to server: %s"
+msgstr "nije moguć upis na server: %s"
+
+#: src/mn-client-session.c:782
+msgid "unable to write to server: EOF"
+msgstr "nije moguć upis na server: EOF"
+
+#: src/mn-client-session.c:814
+#, c-format
+msgid "unable to encode Base64: %s"
+msgstr "nije moguće kodirati Base64: %s"
+
+#: src/mn-client-session.c:917
+#, c-format
+msgid "unable to initialize the SASL library: %s"
+msgstr "ne može se pokrenuti SASL biblioteka: %s"
+
+#: src/mn-client-session.c:926
+#, c-format
+msgid "unable to retrieve local address of socket: %s"
+msgstr "ne može da se dobavi lokalna adresa utičnice: %s"
+
+#: src/mn-client-session.c:932
+#, c-format
+msgid "unable to retrieve remote address of socket: %s"
+msgstr "ne može da se dobavi udaljena adresa utičnice: %s"
+
+#: src/mn-client-session.c:966
+#, c-format
+msgid "warning: unable to set SASL security properties: %s"
+msgstr "upozorenje: nije moguće postaviti SASL sigurnosne postavke %s"
+
+#: src/mn-client-session.c:1005
+msgid ""
+"unable to start SASL authentication: SASL asked for something we did not know"
+msgstr "ne može se pokrenuti SASL prijava: SASL traži podatke koje nemamo"
+
+#: src/mn-client-session.c:1009
+#, c-format
+msgid "unable to start SASL authentication: %s"
+msgstr "ne može se pokrenuti SASL prijava: %s"
+
+#: src/mn-client-session.c:1013
+#, c-format
+msgid "unable to create a SASL connection: %s"
+msgstr "nije moguće uspostaviti SASL vezu: %s"
+
+#: src/mn-client-session.c:1063
+msgid "SASL asked for something we did not know, aborting SASL authentication"
+msgstr "SASL je tražio nama nepoznate podatke, obustavljam SASL prijavu"
+
+#: src/mn-client-session.c:1067
+#, c-format
+msgid "%s, aborting SASL authentication"
+msgstr "%s, obustavljam SASL prijavu"
+
+#. compliance error
+#: src/mn-client-session.c:1072
+#, c-format
+msgid "unable to decode Base64 input from server: %s"
+msgstr "nije moguće dekodovati Base64 ulaz sa servera: %s"
+
+#: src/mn-client-session.c:1075
+msgid ""
+"the server sent a SASL challenge, but there was a pending initial SASL "
+"client response"
+msgstr ""
+"server je započeo SASL razgovor, ali odgovor od klijenta stigao pre toga"
+
+#: src/mn-client-session.c:1089
+msgid ""
+"the server did not send a SASL challenge, but there was no pending initial "
+"SASL client response"
+msgstr ""
+"server nije poslao SASL razgovor, ali nije bilo ni odgovora od klijenta."
+
+#: src/mn-client-session.c:1112
+#, c-format
+msgid "a SASL security layer of strength factor %i is now active"
+msgstr "SASL sigurnosni sloj nivoa snage %i je uspostavljen"
+
+#. a security layer is active but we can't retrieve maxoutbuf -> fatal
+#: src/mn-client-session.c:1117
+#, c-format
+msgid "unable to get SASL_MAXOUTBUF property: %s"
+msgstr "ne mogu da pročitam postavku SASL_MAXOUTBUF: %s"
+
+#: src/mn-client-session.c:1123
+#, c-format
+msgid "warning: unable to get SASL_SSF property: %s"
+msgstr "upozorenje: ne mogu da pročitam postavku SASL_SSF: %s"
+
+#: src/mn-conf.c:123
+#, c-format
+msgid "recursively unsetting %s"
+msgstr "rekurzivno poništavam %s"
+
+#: src/mn-conf.c:127
+msgid "syncing the GConf database"
+msgstr "usklađujem GConf bazu podataka"
+
+#: src/mn-conf.c:130
+msgid "completed"
+msgstr "urađeno"
+
+#: src/mn-gmail-mailbox-properties.gob:79
+msgid "Your Gmail username"
+msgstr "Vaše ime na servisu Gmail"
+
+#: src/mn-gmail-mailbox-properties.gob:80
+msgid "Your Gmail password"
+msgstr "Vaša lozinka na servisu Gmail"
+
+#: src/mn-gmail-mailbox.gob:65
+msgid "libsoup has not been compiled with SSL/TLS support"
+msgstr ""
+
+#: src/mn-gmail-mailbox.gob:110 src/mn-gmail-mailbox.gob:331
+#, fuzzy, c-format
+msgid "unable to parse URI \"%s\""
+msgstr "nije moguće obraditi odgovor \"%s\""
+
+#: src/mn-gmail-mailbox.gob:257
+msgid "logging in"
+msgstr "prijava u toku"
+
+#: src/mn-gmail-mailbox.gob:271 src/mn-gmail-mailbox.gob:342
+#: src/mn-gmail-mailbox.gob:380 src/mn-gmail-mailbox.gob:415
+msgid "login failed"
+msgstr "prijava nije uspela"
+
+#: src/mn-gmail-mailbox.gob:283 src/mn-gmail-mailbox.gob:356
+#: src/mn-gmail-mailbox.gob:394 src/mn-gmail-mailbox.gob:503
+#, c-format
+msgid "unable to transfer data: %s"
+msgstr "ne mogu da preuzmem podatke: %s"
+
+#: src/mn-gmail-mailbox.gob:409
+msgid "successfully logged in"
+msgstr "prijava je uspela"
+
+#: src/mn-gmail-mailbox.gob:487
+msgid "searching for unread mail"
+msgstr "tražim novu poštu"
+
+#: src/mn-gmail-mailbox.gob:491
+#, fuzzy
+msgid "unable to search for unread mail"
+msgstr "tražim novu poštu"
+
+#: src/mn-gmail-mailbox.gob:604
+msgid "unable to parse Gmail data"
+msgstr "ne mogu da obradim podatke sa Gmail-a"
+
+#: src/mn-gmime-stream-vfs.gob:49
+#, fuzzy, c-format
+msgid "unable to read %s: %s"
+msgstr "Nije moguće pronaći %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:51
+#, fuzzy, c-format
+msgid "unable to write to %s: %s"
+msgstr "nije moguć upis na server: %s"
+
+#: src/mn-gmime-stream-vfs.gob:53
+#, fuzzy, c-format
+msgid "unable to seek in %s: %s"
+msgstr "Nije moguće pronaći %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:55
+#, fuzzy, c-format
+msgid "unable to tell position of %s: %s"
+msgstr "nije moguće motriti na %s: %s"
+
+#: src/mn-gmime-stream-vfs.gob:57
+#, fuzzy, c-format
+msgid "unable to close %s: %s"
+msgstr "nije moguće zatvoriti direktorijum: %s"
+
+#: src/mn-imap-mailbox-properties.gob:94
+msgid "Mailbox:"
+msgstr "Sanduče:"
+
+#: src/mn-imap-mailbox-properties.gob:98
+msgid "in_box"
+msgstr "in_box"
+
+#: src/mn-imap-mailbox-properties.gob:109
+msgid "oth_er:"
+msgstr "_drugo:"
+
+#: src/mn-imap-mailbox-properties.gob:124
+msgid "The hostname or IP address of the IMAP server"
+msgstr "Ime ili IP broj IMAP servera"
+
+#: src/mn-imap-mailbox-properties.gob:125
+msgid "Your username on the IMAP server"
+msgstr "Vaše ime na IMAP serveru"
+
+#: src/mn-imap-mailbox-properties.gob:126
+msgid "Your password on the IMAP server"
+msgstr "Vaša lozinka na IMAP serveru"
+
+#: src/mn-imap-mailbox-properties.gob:127
+#: src/mn-imap-mailbox-properties.gob:128
+msgid "The port number of the IMAP server"
+msgstr "Broj porta na IMAP serveru"
+
+#: src/mn-imap-mailbox-properties.gob:129
+msgid "The mailbox name"
+msgstr "Ime sandučeta"
+
+#: src/mn-imap-mailbox.gob:132 src/mn-pop3-mailbox.gob:141
+msgid "SSL/TLS support has not been compiled in"
+msgstr "Podrška za SSL/TLS nije ugrađena"
+
+#: src/mn-imap-mailbox.gob:203
+msgid "server did not send capabilities"
+msgstr "server nije obavestio o svojim mogućnostima"
+
+#: src/mn-imap-mailbox.gob:318
+msgid "server advertised LOGINDISABLED, not using LOGIN authentication"
+msgstr "server je rekao LOGINDISABLED, ne koristim LOGIN prijavu"
+
+#: src/mn-imap-mailbox.gob:319
+msgid "unable to login"
+msgstr "prijava nije moguća"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:447
+#, fuzzy
+msgid "server did not send search results"
+msgstr "server nije poslao status"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:523
+#, fuzzy
+msgid "server did not send all the messages we requested"
+msgstr "server nije poslao status"
+
+#: src/mn-imap-mailbox.gob:570
+#, fuzzy
+msgid "unable to fetch message"
+msgstr "nije moguće povezati se sa: %s"
+
+#. compliance error
+#: src/mn-imap-mailbox.gob:617
+msgid "server did not send status"
+msgstr "server nije poslao status"
+
+#: src/mn-imap-mailbox.gob:856 src/mn-pop3-mailbox.gob:903
+msgid "unknown server error"
+msgstr "nepoznata greška na serveru"
+
+#: src/mn-imap-mailbox.gob:927 src/mn-pop3-mailbox.gob:225
+msgid "server does not support in-band SSL/TLS"
+msgstr "server ne podržava zaštitu putem SSL/TLS"
+
+#: src/mn-imap-mailbox.gob:946 src/mn-pop3-mailbox.gob:823
+msgid ""
+"a SASL authentication mechanism was selected but SASL support has not been "
+"compiled in"
+msgstr ""
+"izabran je mehanizam za prijavu koji koristi SASL ali podrška za SASL nije "
+"ugrađena u program"
+
+#: src/mn-imap-mailbox.gob:954 src/mn-pop3-mailbox.gob:835
+#, c-format
+msgid "unknown authentication mechanism \"%s\""
+msgstr "nepoznat mehanizam za prijavu \"%s\""
+
+#: src/mn-imap-mailbox.gob:972
+msgid "falling back to IMAP LOGIN authentication"
+msgstr "povratak na IMAP LOGIN prijavu"
+
+#: src/mn-imap-mailbox.gob:976 src/mn-pop3-mailbox.gob:869
+msgid "authentication failed"
+msgstr "prijava nije uspela"
+
+#: src/mn-mail-icon.gob:84 ui/summary-dialog.glade.h:2
+msgid "_Update"
+msgstr "_Osveži"
+
+#: src/mn-mail-icon.gob:90
+msgid "R_emove From Notification Area"
+msgstr "_Ukloni sa obaveštajne zone"
+
+#: src/mn-mailbox-properties-dialog.c:109
+msgid "Add a Mailbox"
+msgstr "Dodaj sanduče"
+
+#: src/mn-mailbox-properties-dialog.c:328
+#, c-format
+msgid "%s Properties"
+msgstr "Postavke za %s"
+
+#: src/mn-mailbox-properties-util.c:77
+msgid "_Username:"
+msgstr "_Kor.ime:"
+
+#: src/mn-mailbox-properties-util.c:87
+msgid "_Password:"
+msgstr "_Lozinka:"
+
+#: src/mn-mailbox-properties-util.c:154
+msgid "Connection type:"
+msgstr "Vrsta veze:"
+
+#: src/mn-mailbox-properties-util.c:161
+msgid "Port:"
+msgstr "Port:"
+
+#: src/mn-mailbox-properties-util.c:189
+msgid "_Authentication mechanism:"
+msgstr "_Način prijave:"
+
+#: src/mn-mailbox-properties.c:63
+msgid "Label"
+msgstr "Oznaka"
+
+#: src/mn-mailbox-properties.c:64
+msgid "The marked up text to show in the type combo box"
+msgstr "Označeni tekst koji se pojavljuje u oznaci tipa"
+
+#: src/mn-mailbox-properties.c:69
+msgid "Size group"
+msgstr "Veličina grupe"
+
+#: src/mn-mailbox-properties.c:70
+msgid "A GtkSizeGroup for aligning control labels"
+msgstr "GtkSizeGroup za uravnanje kontrolnih oznaka"
+
+#: src/mn-mailbox-properties.c:75
+msgid "Complete"
+msgstr "Gotovo"
+
+#: src/mn-mailbox-properties.c:76
+msgid "Whether the properties are completely filled or not"
+msgstr "Da li su postavke sasvim popunjene ili ne"
+
+#: src/mn-mailbox-view.gob:263 src/mn-message-label.gob:74
+msgid "Mailbox"
+msgstr "Sanduče"
+
+#. format column
+#: src/mn-mailbox-view.gob:279
+msgid "Format"
+msgstr "Format"
+
+#: src/mn-mailbox-view.gob:569
+msgid "Unable to add mailbox"
+msgstr "Nije moguće dodati sanduče"
+
+#: src/mn-mailbox-view.gob:569
+msgid "The mailbox is already in the list."
+msgstr "Sanduče je već u spisku."
+
+#: src/mn-mailbox.gob:133
+msgid "The mailbox URI"
+msgstr "URI oznaka za sanduče"
+
+#: src/mn-mailbox.gob:144
+msgid "The mailbox human-readable name"
+msgstr "Ime sandučeta"
+
+#: src/mn-mailbox.gob:148
+msgid "Whether the mailbox has to be manually checked or not"
+msgstr "Da li se ovo sanduče ručno proverava ili ne"
+
+#: src/mn-mailbox.gob:153
+msgid "Whether the mailbox has new mail or not"
+msgstr "Da li u sandučetu stoji nova pošta ili ne"
+
+#: src/mn-mailbox.gob:158
+msgid "The list of new and unread MNMessage objects"
+msgstr ""
+
+#: src/mn-mailbox.gob:212
+msgid "The mailbox error, if any"
+msgstr "Greška u pristupu sandučetu, ako postoji"
+
+#: src/mn-mailbox.gob:310
+msgid "does not exist"
+msgstr "ne postoji"
+
+#: src/mn-mailbox.gob:342
+msgid "unknown format"
+msgstr "nepoznat format"
+
+#: src/mn-mailbox.gob:408
+#, fuzzy, c-format
+msgid "unable to enable immediate notification for %s: %s"
+msgstr ""
+"Nije moguće namestiti neposrednu dojavu nove pošte za jedan ili više "
+"sandučića. %s"
+
+#: src/mn-mailbox.gob:426
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i second (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i seconds (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-mailbox.gob:437
+#, c-format
+msgid ""
+"As a fallback, they will be checked every %i minute (this delay is "
+"configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked every %i minutes (this delay is "
+"configurable from the Properties Dialog)."
+msgstr[0] ""
+"Pošto nema druge mogućnosti, biće proveravani svaki %i minut (ovo kašnjenje "
+"se može promeniti iz prozora sa postavkama)"
+msgstr[1] ""
+"Pošto nema druge mogućnosti, biće proveravani svakih %i minuta (ovo "
+"kašnjenje se može promeniti iz prozora sa postavkama)"
+msgstr[2] ""
+"Pošto nema druge mogućnosti, biće proveravani svakih %i minuta (ovo "
+"kašnjenje se može promeniti iz prozora sa postavkama)"
+
+#: src/mn-mailbox.gob:448
+#, c-format
+msgid ""
+"As a fallback, they will be checked approximately every %i minute (this "
+"delay is configurable from the Properties Dialog)."
+msgid_plural ""
+"As a fallback, they will be checked approximately every %i minutes (this "
+"delay is configurable from the Properties Dialog)."
+msgstr[0] ""
+"Pošto nema druge mogućnosti, biće proveravani na oko %i minut (ovo kašnjenje "
+"se može promeniti iz prozora sa postavkama)"
+msgstr[1] ""
+"Pošto nema druge mogućnosti, biće proveravani na oko %i minuta (ovo "
+"kašnjenje se može promeniti iz prozora sa postavkama)"
+msgstr[2] ""
+"Pošto nema druge mogućnosti, biće proveravani na oko %i minuta (ovo "
+"kašnjenje se može promeniti iz prozora sa postavkama)"
+
+#: src/mn-mailbox.gob:464
+msgid "A monitoring error has occurred"
+msgstr "Došlo je do greške pri motrenju"
+
+#: src/mn-mailbox.gob:465
+#, c-format
+msgid ""
+"Mail Notification was unable to enable immediate notification for one or "
+"more mailboxes. %s"
+msgstr ""
+"Nije moguće namestiti neposrednu dojavu nove pošte za jedan ili više "
+"sandučića. %s"
+
+#: src/mn-mailboxes.gob:133
+#, fuzzy
+msgid "Whether one or more of the mailboxes has to be polled"
+msgstr "Da li se ovo sanduče ručno proverava ili ne"
+
+#: src/mn-mailboxes.gob:266
+#, c-format
+msgid "%s is unsupported: %s"
+msgstr "%s nije podržan: %s"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has new mail"
+msgstr "Sanduče %s ima novu poštu"
+
+#: src/mn-mailboxes.gob:297
+#, c-format
+msgid "%s has no new mail"
+msgstr "Sanduče %s nema novu poštu"
+
+#: src/mn-mailboxes.gob:323
+#, c-format
+msgid "%s reported an error: %s"
+msgstr "%s je dojavio grešku: %s"
+
+#: src/mn-maildir-mailbox.gob:119
+#, c-format
+msgid "unable to open folder \"new\": %s"
+msgstr "nije moguće otvoriti direktorijum \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:161
+#, c-format
+msgid "unable to close folder \"new\": %s"
+msgstr "nije moguće zatvoriti direktorijum \"new\": %s"
+
+#: src/mn-maildir-mailbox.gob:164
+#, c-format
+msgid "error while reading folder \"new\": %s"
+msgstr "greška pri čitanju direktorijuma \"new\": %s"
+
+#: src/mn-main.c:97
+#, c-format
+msgid "Compiled-in mailbox backends: %s\n"
+msgstr "Program ume da čita sandučiće u formatima: %s\n"
+
+#: src/mn-main.c:114
+#, c-format
+msgid "Compiled-in features: %s\n"
+msgstr "Ugrađene mogućnosti: %s\n"
+
+#: src/mn-main.c:166
+msgid "Enable informational output"
+msgstr "Dozvoli rečitiji izlaz"
+
+#: src/mn-main.c:175
+msgid "List compiled-in features and exit"
+msgstr "Ispiši ugrađene mogućnosti i izađi"
+
+#: src/mn-main.c:184
+#, fuzzy
+msgid "Display the mail summary dialog"
+msgstr "Prikaži podatke o programu"
+
+#: src/mn-main.c:193
+msgid "Display the properties dialog"
+msgstr "Prikaži prozor sa postavkama"
+
+#: src/mn-main.c:202
+msgid "Display the about dialog"
+msgstr "Prikaži podatke o programu"
+
+#: src/mn-main.c:211
+msgid "Close the mail summary popup"
+msgstr ""
+
+#: src/mn-main.c:220
+msgid "Update the mail status"
+msgstr "Osveži podatke o pošti"
+
+#: src/mn-main.c:229
+msgid "Report the mail status"
+msgstr "Proveri poštu"
+
+#: src/mn-main.c:238
+msgid "Unset obsolete GConf configuration and exit"
+msgstr "Poništi zastarela GConf podešavanja i izađi"
+
+#.
+#. * We can't use mn_error_dialog() because gtk_init() has not been
+#. * called yet.
+#.
+#: src/mn-main.c:264
+msgid "multi-threading is not available"
+msgstr "višenitni rad nije podržan"
+
+#: src/mn-main.c:309
+msgid ""
+"Bonobo could not locate the automation object. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite "
+"instalaciju programa za dojavu pošte. (Prim. prev: usled greške u programu "
+"Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, treba da se "
+"odjavite i ponovo prijavite na sistem da bi sve počelo da radi)"
+
+#: src/mn-main.c:314
+msgid "Unable to initialize the GnomeVFS library."
+msgstr "Nije moguće pokrenuti biblioteku GnomeVFS."
+
+#: src/mn-main.c:350
+msgid "updating the mail status"
+msgstr "Proveravam poštu"
+
+#: src/mn-main.c:368
+msgid "Mail Notification is already running"
+msgstr "Program za dojavu pošte je već pokrenut."
+
+#: src/mn-main.c:375
+msgid ""
+"Bonobo could not locate the GNOME_MailNotification_Automation.server file. "
+"Please check your Mail Notification installation."
+msgstr ""
+"Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite "
+"instalaciju programa za dojavu pošte. (Prim. prev: usled greške u programu "
+"Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, treba da se "
+"odjavite i ponovo prijavite na sistem da bi sve počelo da radi)"
+
+#: src/mn-main.c:379
+msgid ""
+"Bonobo was unable to register the automation server. Please check your Mail "
+"Notification installation."
+msgstr ""
+"Bonobo nije uspeo da pronađe objekat za automatizaciju. Proverite "
+"instalaciju programa za dojavu pošte. (Prim. prev: usled greške u programu "
+"Bonobo u Gnomu 2.6, kada instalirate program za obaveštenja, treba da se "
+"odjavite i ponovo prijavite na sistem da bi sve počelo da radi)"
+
+#: src/mn-mbox-mailbox.gob:221
+#, c-format
+msgid "error while reading mailbox: %s"
+msgstr "greška pri čitanju sandučeta: %s"
+
+#: src/mn-mbox-mailbox.gob:230
+#, c-format
+msgid "unable to open mailbox: %s"
+msgstr "nije moguće otvoriti sanduče: %s"
+
+#: src/mn-message-label.gob:77
+msgid "Unreadable message"
+msgstr ""
+
+#: src/mn-message-label.gob:97
+msgid "From"
+msgstr ""
+
+#: src/mn-message-label.gob:98
+msgid "Subject"
+msgstr ""
+
+#: src/mn-message-label.gob:102
+msgid "Sent"
+msgstr ""
+
+#: src/mn-message-label.gob:151
+#, c-format
+msgid "%i second ago"
+msgid_plural "%i seconds ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:155
+#, c-format
+msgid "%i minute ago"
+msgid_plural "%i minutes ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:160
+#, c-format
+msgid "%i hour ago"
+msgid_plural "%i hours ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-label.gob:165
+#, c-format
+msgid "%i day ago"
+msgid_plural "%i days ago"
+msgstr[0] ""
+msgstr[1] ""
+
+#: src/mn-message-mime.c:105
+#, fuzzy
+msgid "unable to parse MIME message"
+msgstr "nije moguće obraditi odgovor \"%s\""
+
+#: src/mn-message.gob:82
+msgid "Unknown"
+msgstr ""
+
+#: src/mn-mh-mailbox.gob:184
+#, c-format
+msgid "error while reading .mh_sequences: %s"
+msgstr "greška pri čitanju datoteke .mh_sequences: %s"
+
+#: src/mn-mh-mailbox.gob:196
+#, c-format
+msgid "unable to open .mh_sequences: %s"
+msgstr "nije moguće otvoriti datoteku .mh_sequences: %s"
+
+#: src/mn-pending-mailbox.gob:35
+msgid "detecting"
+msgstr "istražujem"
+
+#: src/mn-pi-mailbox-properties.gob:76
+msgid "_Hostname:"
+msgstr "_Računar:"
+
+#: src/mn-pi-mailbox-properties.gob:94
+msgid "_Details"
+msgstr "_Detalji"
+
+#: src/mn-pi-mailbox-properties.gob:106
+msgid "sta_ndard"
+msgstr "_standard"
+
+#: src/mn-pi-mailbox-properties.gob:116
+msgid "_in-band SSL/TLS"
+msgstr "_ugrađeni SSL/TLS"
+
+#: src/mn-pi-mailbox-properties.gob:126
+msgid "SSL/TLS on sepa_rate port"
+msgstr "SSL/TLS na posebnom portu"
+
+#: src/mn-pop3-mailbox-properties.gob:86
+msgid "The hostname or IP address of the POP3 server"
+msgstr "Ime ili IP broj POP3 servera"
+
+#: src/mn-pop3-mailbox-properties.gob:87
+msgid "Your username on the POP3 server"
+msgstr "Vaše ime na POP3 serveru"
+
+#: src/mn-pop3-mailbox-properties.gob:88
+msgid "Your password on the POP3 server"
+msgstr "Vaša lozinka na POP3 serveru"
+
+#: src/mn-pop3-mailbox-properties.gob:89 src/mn-pop3-mailbox-properties.gob:90
+msgid "The port number of the POP3 server"
+msgstr "Broj porta na POP3 serveru"
+
+#: src/mn-pop3-mailbox.gob:271
+msgid "invalid arguments for the LOGIN-DELAY capability"
+msgstr "parametri za mogućnost LOGIN-DELAY nisu ispravno postavljeni"
+
+#: src/mn-pop3-mailbox.gob:536
+#, fuzzy
+msgid "unknown error"
+msgstr "nepoznata greška na serveru"
+
+#: src/mn-pop3-mailbox.gob:666
+#, c-format
+msgid "honouring LOGIN-DELAY, sleeping for %i second"
+msgid_plural "honouring LOGIN-DELAY, sleeping for %i seconds"
+msgstr[0] "tražen je zastoj pri prijavi, pauziram %i sekundu"
+msgstr[1] "tražen je zastoj pri prijavi, pauziram %i sekunde"
+msgstr[2] "tražen je zastoj pri prijavi, pauziram %i sekundi"
+
+#: src/mn-pop3-mailbox.gob:831
+msgid "server does not support APOP authentication"
+msgstr "server ne podržava prijavu korišćenjem mehanizma APOP"
+
+#: src/mn-pop3-mailbox.gob:859
+msgid "falling back to APOP authentication"
+msgstr "prelazim na APOP prijavu"
+
+#: src/mn-pop3-mailbox.gob:864
+msgid "falling back to USER/PASS authentication"
+msgstr "prelazim na prijavu pomoću imena i lozinke"
+
+#: src/mn-properties.c:161
+#, fuzzy
+msgid "top left"
+msgstr "Gotovo"
+
+#: src/mn-properties.c:162
+msgid "top right"
+msgstr ""
+
+#: src/mn-properties.c:163
+msgid "bottom left"
+msgstr ""
+
+#: src/mn-properties.c:164
+msgid "bottom right"
+msgstr ""
+
+#: src/mn-properties.c:240
+msgid "No mailbox selected."
+msgstr "Nijedno sanduče nije izabrano."
+
+#: src/mn-properties.c:245
+#, c-format
+msgid "%i mailbox selected."
+msgid_plural "%i mailboxes selected."
+msgstr[0] "Izabrano %i sanduče"
+msgstr[1] "Izabrana %i sandučeta"
+msgstr[2] "Izabrano %i sandučeta"
+
+#: src/mn-shell.gob:84
+msgid "You have new mail."
+msgstr "Imate novu poštu."
+
+#: src/mn-shell.gob:96
+msgid "A command error has occurred in Mail Notification"
+msgstr "Došlo je do greške u komandama"
+
+#: src/mn-shell.gob:97
+#, c-format
+msgid "Unable to execute new mail command: %s."
+msgstr "Nije moguće izvršiti komandu za novu poštu: %s."
+
+#: src/mn-shell.gob:270
+msgid "The following mailbox has new mail:\n"
+msgid_plural "The following mailboxes have new mail:\n"
+msgstr[0] "Sanduče sa novom poštom:\n"
+msgstr[1] "Sandučići sa novom poštom:\n"
+msgstr[2] "Sandučići sa novom poštom:\n"
+
+#: src/mn-shell.gob:274
+msgid "You have no new mail."
+msgstr "Nema pošte."
+
+#: src/mn-shell.gob:277
+msgid "The following mailbox reported an error:\n"
+msgid_plural "The following mailboxes reported an error:\n"
+msgstr[0] "Ovo sanduče ima grešku:\n"
+msgstr[1] "Ovi sandučići imaju grešku:\n"
+msgstr[2] "Ovi sandučići imaju grešku:\n"
+
+#: src/mn-shell.gob:282
+msgid "The following mailbox is unsupported:\n"
+msgid_plural "The following mailboxes are unsupported:\n"
+msgstr[0] "Ovo sanduče nije podržano:\n"
+msgstr[1] "Ovi sandučići nisu podržani:\n"
+msgstr[2] "Ovi sandučići nisu podržani:\n"
+
+#: src/mn-ssl.c:79
+msgid "unknown SSL/TLS error"
+msgstr "nepoznata greška u SSL/TLS"
+
+#: src/mn-stock.c:28
+msgid "Select _All"
+msgstr "Izaberi _sve"
+
+#: src/mn-stock.c:29
+msgid "_Mail Summary"
+msgstr ""
+
+#: src/mn-sylpheed-mailbox.gob:122
+#, c-format
+msgid "unable to open folder: %s"
+msgstr "nije moguće otvoriti direktorijum: %s"
+
+#: src/mn-sylpheed-mailbox.gob:180
+#, c-format
+msgid "unable to close folder: %s"
+msgstr "nije moguće zatvoriti direktorijum: %s"
+
+#: src/mn-sylpheed-mailbox.gob:183
+#, c-format
+msgid "error while reading folder: %s"
+msgstr "greška pri čitanju direktorijuma: %s"
+
+#: src/mn-system-mailbox-properties.gob:34 src/mn-uri.gob:393
+msgid "System Mailbox"
+msgstr "Lokalno sanduče"
+
+#: src/mn-system-mailbox-properties.gob:57
+#, c-format
+msgid "Your system mailbox (<span weight=\"bold\">%s</span>) will be used."
+msgstr "Koristi se lokalno sanduče (<span weight=\"bold\">%s</span>)."
+
+#: src/mn-system-mailbox-properties.gob:64
+msgid ""
+"The location of your system mailbox could not be detected. Please set the "
+"MAIL environment variable."
+msgstr ""
+"Program nije uspeo da pronađe lokalno sanduče. Postavite promenljivu MAIL da "
+"pokazuje na njega."
+
+#: src/mn-unsupported-mailbox.gob:33
+msgid "The reason why the mailbox is unsupported"
+msgstr "Razlog zašto sanduče nije podržano"
+
+#: src/mn-unsupported-mailbox.gob:40
+msgid "unsupported"
+msgstr "nije podržano"
+
+#: src/mn-util.c:233
+#, c-format
+msgid "error loading image: %s"
+msgstr "greška pri učitavanju slike: %s"
+
+#: src/mn-util.c:271
+#, fuzzy, c-format
+msgid "widget \"%s\" not found in interface \"%s\""
+msgstr "element %s nije pronađen u sučelju %s"
+
+#: src/mn-util.c:385
+msgid "received an invalid URI list"
+msgstr "primljen je neispravan spisak URI oznaka"
+
+#: src/mn-util.c:421
+msgid "received an invalid Mozilla URL"
+msgstr "primljen je neispravan Mozilin URL"
+
+#: src/mn-util.c:514
+msgid "Unable to display help"
+msgstr "Nije moguće prikazati pomoć"
+
+#: src/mn-util.c:528
+#, c-format
+msgid "Unable to create a thread: %s."
+msgstr "Nije moguće pokrenuti nit: %s."
+
+#: src/mn-util.c:705
+msgid "_Do not show this message again"
+msgstr ""
+
+#: src/mn-util.c:789
+msgid "A fatal error has occurred in Mail Notification"
+msgstr "Došlo je do kobne greške u programu za dojavu pošte"
+
+#: src/mn-util.c:804
+#, fuzzy, c-format
+msgid "unable to get current time: %s"
+msgstr "nije moguće povezati se sa %s"
+
+#: src/mn-util.c:887
+#, c-format
+msgid "invalid signal specification \"%s\""
+msgstr ""
+
+#: ui/mailbox-properties.glade.h:1
+msgid "_Mailbox type:"
+msgstr "_Vrsta sandučeta:"
+
+#: ui/properties.glade.h:1
+msgid " "
+msgstr " "
+
+#: ui/properties.glade.h:2
+msgid "*"
+msgstr "*"
+
+#: ui/properties.glade.h:3
+msgid "<span weight=\"bold\">General</span>"
+msgstr "<span weight=\"bold\">Opšte</span>"
+
+#: ui/properties.glade.h:4
+#, fuzzy
+msgid "<span weight=\"bold\">Mailbox List</span>"
+msgstr "<span weight=\"bold\">Sandučići</span>"
+
+#: ui/properties.glade.h:5
+#, fuzzy
+msgid "<span weight=\"bold\">Position</span>"
+msgstr "<span weight=\"bold\">Naredbe</span>"
+
+#: ui/properties.glade.h:6
+msgid "General"
+msgstr ""
+
+#: ui/properties.glade.h:7
+msgid "Hori_zontal offset:"
+msgstr ""
+
+#: ui/properties.glade.h:8
+msgid "Mail Notification Properties"
+msgstr "Postavke za dojavu"
+
+#: ui/properties.glade.h:9
+msgid "Mail Summary Popup"
+msgstr ""
+
+#: ui/properties.glade.h:10
+#, fuzzy
+msgid "Mailboxes"
+msgstr "Sanduče"
+
+#: ui/properties.glade.h:11
+#, fuzzy
+msgid "P_osition:"
+msgstr "_Mesto:"
+
+#: ui/properties.glade.h:12
+#, fuzzy
+msgid "The amount of time to wait before closing the mail summary popup"
+msgstr "Pauza između dve uzastopne provere"
+
+#: ui/properties.glade.h:13
+msgid "The amount of time to wait between mail checks"
+msgstr "Pauza između dve uzastopne provere"
+
+#: ui/properties.glade.h:14
+msgid "The command to run when new mail arrives"
+msgstr "Naredba koja se pokreće kada stiže nova pošta"
+
+#: ui/properties.glade.h:15
+msgid ""
+"The number of pixels to leave between the left or right side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:16
+msgid ""
+"The number of pixels to leave between the top or bottom side of the screen "
+"and the mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:17
+msgid "Whether the status icon should blink on errors or not"
+msgstr "Da li statusna sličica treperi pri greškama ili ne"
+
+#: ui/properties.glade.h:18
+#, fuzzy
+msgid "Whether to automatically close the mail summary popup or not"
+msgstr "Da li u sandučetu stoji nova pošta ili ne"
+
+#: ui/properties.glade.h:19
+#, fuzzy
+msgid "Whether to display the mail summary popup when new mail arrives or not"
+msgstr "Da li se pokreće komanda kada stigne pošta ili ne"
+
+#: ui/properties.glade.h:20
+msgid "Whether to run a command when new mail arrives or not"
+msgstr "Da li se pokreće komanda kada stigne pošta ili ne"
+
+#: ui/properties.glade.h:21
+msgid ""
+"Whether to start Mail Notification when you log into your GNOME session or "
+"not"
+msgstr "Da li pokrenuti dojavu pošte kada se prijavite na sistem"
+
+#: ui/properties.glade.h:22
+msgid "_Automatically close after:"
+msgstr ""
+
+#: ui/properties.glade.h:23
+msgid "_Blink on errors"
+msgstr "_Treperi pri greškama"
+
+#: ui/properties.glade.h:24
+msgid "_Delay between mail checks:"
+msgstr "_Pauza između provera:"
+
+#: ui/properties.glade.h:25
+msgid "_Enable mail summary popup"
+msgstr ""
+
+#: ui/properties.glade.h:26
+#, fuzzy
+msgid "_Run a command when new mail arrives:"
+msgstr "Pokreni komandu kada stigne nova pošta"
+
+#: ui/properties.glade.h:27
+msgid "_Start Mail Notification on GNOME login"
+msgstr "Pokreni _dojavu pri prijavi"
+
+#: ui/properties.glade.h:28
+msgid "_Vertical offset:"
+msgstr ""
+
+#: ui/properties.glade.h:29
+msgid "minutes"
+msgstr "minuta"
+
+#: ui/properties.glade.h:30
+msgid "pixels"
+msgstr ""
+
+#: ui/properties.glade.h:31
+msgid "seconds"
+msgstr "sekundi"
+
+#: ui/summary-dialog.glade.h:1
+msgid "Mail Summary"
+msgstr ""
+
+#: ui/summary-popup.glade.h:1
+#, fuzzy
+msgid "<span size=\"larger\" weight=\"bold\">Mail Summary</span>"
+msgstr "<span weight=\"bold\">Sandučići</span>"
+
+#: ui/welcome.glade.h:1
+msgid ""
+"<span weight=\"bold\" size=\"larger\">First startup</span>\n"
+"\n"
+"Mail Notification has been loaded successfully.\n"
+"\n"
+"Since this is the first time you run Mail Notification, you might want to "
+"configure it.\n"
+"\n"
+"Note: this message will not be shown anymore. To configure Mail Notification "
+"again, choose <span weight=\"bold\">Applications</span> → <span weight=\"bold"
+"\">Desktop Preferences</span> → <span weight=\"bold\">Mail Notification</"
+"span> (or on some systems <span weight=\"bold\">Applications → Preferences → "
+"More Preferences → Mail Notification</span>)."
+msgstr ""
+"<span weight=\"bold\" size=\"larger\">Prvo pokretanje</span>\n"
+"\n"
+"Program za dojavu pošte je uspešno pokrenut.\n"
+"\n"
+"Pošto ste program za dojavu pošte prvi put pokrenuli, verovatno želite i da "
+"ga podesite.\n"
+"\n"
+"Pažnja: ova poruka se ubuduće neće prikazivati. Da biste podesili dojavu "
+"pošte, izaberite stavku Programi <span weight=\"bold\">Programi</span> → "
+"<span weight=\"bold\">Postavke okruženja</span> → <span weight=\"bold"
+"\">Dojava pošte</span> (ili na nekim sistemima <span weight=\"bold"
+"\">Programi → Postavke → Još postavki → Dojava pošte</span>)."
+
+#: ui/welcome.glade.h:8
+msgid "_Configure Mail Notification"
+msgstr "_Podesi dojavu pošte"
+
+#: ui/welcome.glade.h:9
+msgid "_Skip configuration"
+msgstr "P_reskoči podešavanja"
+
+#~ msgid "Double-clicked command"
+#~ msgstr "Izvrši na dvostruki klik"
+
+#~ msgid "Run a command when the icon is double-clicked"
+#~ msgstr "Izvrši komandu pri dvostrukom kliku na ikonu"
+
+#~ msgid "The command to run when the icon is double-clicked."
+#~ msgstr "Pokreni ovu komandu pri dvostrukom kliku na ikonu."
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not."
+#~ msgstr ""
+#~ "Da li treba pokrenuti neku komandu kada pri dvostrukom kliku na ikonu."
+
+#~ msgid "_Run %s"
+#~ msgstr "_Pokreni %s"
+
+#~ msgid "_Run Default Action"
+#~ msgstr "P_okreni podrazumevano"
+
+#~ msgid "A command error has occurred"
+#~ msgstr "Došlo je do greške u komandama"
+
+#~ msgid "Unable to execute double-clicked command: %s."
+#~ msgstr "Nije moguće izvršiti komandu na dvostruki klik: %s."
+
+#~ msgid "The command to run when the icon is double-clicked"
+#~ msgstr "Naredba koja se pokreće pri dvostrukom kliku"
+
+#~ msgid "When _new mail arrives:"
+#~ msgstr "Kada _stigne nova pošta:"
+
+#~ msgid "When double-click_ed:"
+#~ msgstr "Pri _dvostrukom kliku:"
+
+#~ msgid "Whether to run a command when the icon is double-clicked or not"
+#~ msgstr "Da li se pokreće komanda pri dvostrukom kliku ili ne"
diff --git a/src/MNAutomation.idl b/src/MNAutomation.idl
@@ -24,7 +24,9 @@ module GNOME
{
void update ();
void report (out string report);
+ void displayMailSummary ();
void displayProperties ();
void displayAbout ();
+ void closePopup ();
};
};
diff --git a/src/Makefile.am b/src/Makefile.am
@@ -84,10 +84,25 @@ gmail_gob_built_sources = \
mn-gmail-mailbox-private.h \
mn-gmail-mailbox.c \
mn-gmail-mailbox.h
+gmail_sources = \
+ mn-sgml-ref.c \
+ mn-sgml-ref.h \
+ mn-soup.c \
+ mn-soup.h
+gmail_built_sources = \
+ mn-sgml-entities.h
endif
-if HAVE_SOUP
-soup_sources = mn-soup.c mn-soup.h
+if WITH_MIME
+mime_gob_sources = \
+ mn-gmime-stream-vfs.gob
+mime_gob_built_sources = \
+ mn-gmime-stream-vfs-private.h \
+ mn-gmime-stream-vfs.c \
+ mn-gmime-stream-vfs.h
+mime_sources = \
+ mn-message-mime.c \
+ mn-message-mime.h
endif
if WITH_SSL
@@ -114,6 +129,7 @@ gob_sources = \
$(pi_gob_sources) \
$(sylpheed_gob_sources) \
$(gmail_gob_sources) \
+ $(mime_gob_sources) \
mn-about-dialog.gob \
mn-autodetect-mailbox-properties.gob \
mn-automation.gob \
@@ -122,6 +138,8 @@ gob_sources = \
mn-mailbox-view.gob \
mn-mailbox.gob \
mn-mailboxes.gob \
+ mn-message-label.gob \
+ mn-message.gob \
mn-pending-mailbox.gob \
mn-shell.gob \
mn-system-mailbox-properties.gob \
@@ -136,6 +154,7 @@ gob_built_sources = \
$(pi_gob_built_sources) \
$(sylpheed_gob_built_sources) \
$(gmail_gob_built_sources) \
+ $(mime_gob_built_sources) \
mn-about-dialog-private.h \
mn-about-dialog.c \
mn-about-dialog.h \
@@ -160,6 +179,12 @@ gob_built_sources = \
mn-mailboxes-private.h \
mn-mailboxes.c \
mn-mailboxes.h \
+ mn-message-label-private.h \
+ mn-message-label.c \
+ mn-message-label.h \
+ mn-message-private.h \
+ mn-message.c \
+ mn-message.h \
mn-pending-mailbox-private.h \
mn-pending-mailbox.c \
mn-pending-mailbox.h \
@@ -181,11 +206,13 @@ mail_notification_SOURCES = \
$(idl_sources) \
$(gob_sources) \
$(gob_built_sources) \
+ $(gmail_sources) \
+ $(gmail_built_sources) \
$(md5_sources) \
$(client_session_sources) \
- $(soup_sources) \
$(ssl_sources) \
$(sasl_sources) \
+ $(mime_sources) \
eggtrayicon.c \
eggtrayicon.h \
mn-conf.c \
@@ -201,13 +228,22 @@ mail_notification_SOURCES = \
mn-properties.h \
mn-stock.c \
mn-stock.h \
+ mn-summary-dialog.c \
+ mn-summary-dialog.h \
+ mn-summary-popup.c \
+ mn-summary-popup.h \
+ mn-summary.c \
+ mn-summary.h \
mn-util.c \
mn-util.h \
mn-vfs.c \
mn-vfs.h
-BUILT_SOURCES = $(idl_built_sources) $(gob_built_sources)
+BUILT_SOURCES = \
+ $(idl_built_sources) \
+ $(gob_built_sources) \
+ $(gmail_built_sources)
-AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
+AM_CPPFLAGS = $(WARN_CFLAGS) $(GNOME_CFLAGS) $(GMIME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
-I$(top_srcdir) \
-DPREFIX="\"$(prefix)\"" \
-DSYSCONFDIR="\"$(sysconfdir)\"" \
@@ -216,12 +252,18 @@ AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OP
-DGNOMELOCALEDIR="\"$(datadir)/locale\"" \
-DUIDIR="\"$(pkgdatadir)/ui\"" \
-DG_LOG_DOMAIN="\"$(PACKAGE)\""
-AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
+AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GMIME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
CLEANFILES = $(idl_built_sources)
-MAINTAINERCLEANFILES = $(gob_built_sources)
+MAINTAINERCLEANFILES = $(gob_built_sources) $(gmail_built_sources)
+
+entity_sets = xhtml-lat1.ent xhtml-special.ent xhtml-symbol.ent
+EXTRA_DIST = ent2h.sh $(entity_sets)
%.c %.h %-private.h: %.gob
$(GOB2) --always-private-header --exit-on-warn $<
%-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
$(ORBIT_IDL) -I$(LIBBONOBO_IDL) -I$(BONOBO_ACTIVATION_IDL) $<
+
+mn-sgml-entities.h: ent2h.sh $(entity_sets)
+ ./ent2h.sh $(entity_sets) > $@
diff --git a/src/Makefile.in b/src/Makefile.in
@@ -57,10 +57,11 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
mn-imap-mailbox-properties.gob mn-imap-mailbox.gob \
mn-auth-combo-box.gob mn-pi-mailbox-properties.gob \
mn-sylpheed-mailbox.gob mn-gmail-mailbox-properties.gob \
- mn-gmail-mailbox.gob mn-about-dialog.gob \
- mn-autodetect-mailbox-properties.gob mn-automation.gob \
- mn-blinking-image.gob mn-mail-icon.gob mn-mailbox-view.gob \
- mn-mailbox.gob mn-mailboxes.gob mn-pending-mailbox.gob \
+ mn-gmail-mailbox.gob mn-gmime-stream-vfs.gob \
+ mn-about-dialog.gob mn-autodetect-mailbox-properties.gob \
+ mn-automation.gob mn-blinking-image.gob mn-mail-icon.gob \
+ mn-mailbox-view.gob mn-mailbox.gob mn-mailboxes.gob \
+ mn-message-label.gob mn-message.gob mn-pending-mailbox.gob \
mn-shell.gob mn-system-mailbox-properties.gob \
mn-unsupported-mailbox.gob mn-uri.gob \
mn-mbox-mailbox-private.h mn-mbox-mailbox.c mn-mbox-mailbox.h \
@@ -79,8 +80,10 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
mn-sylpheed-mailbox.h mn-gmail-mailbox-properties-private.h \
mn-gmail-mailbox-properties.c mn-gmail-mailbox-properties.h \
mn-gmail-mailbox-private.h mn-gmail-mailbox.c \
- mn-gmail-mailbox.h mn-about-dialog-private.h mn-about-dialog.c \
- mn-about-dialog.h mn-autodetect-mailbox-properties-private.h \
+ mn-gmail-mailbox.h mn-gmime-stream-vfs-private.h \
+ mn-gmime-stream-vfs.c mn-gmime-stream-vfs.h \
+ mn-about-dialog-private.h mn-about-dialog.c mn-about-dialog.h \
+ mn-autodetect-mailbox-properties-private.h \
mn-autodetect-mailbox-properties.c \
mn-autodetect-mailbox-properties.h mn-automation-private.h \
mn-automation.c mn-automation.h mn-blinking-image-private.h \
@@ -88,24 +91,30 @@ am__mail_notification_SOURCES_DIST = MNAutomation.idl \
mn-mail-icon.c mn-mail-icon.h mn-mailbox-view-private.h \
mn-mailbox-view.c mn-mailbox-view.h mn-mailbox-private.h \
mn-mailbox.c mn-mailbox.h mn-mailboxes-private.h \
- mn-mailboxes.c mn-mailboxes.h mn-pending-mailbox-private.h \
+ mn-mailboxes.c mn-mailboxes.h mn-message-label-private.h \
+ mn-message-label.c mn-message-label.h mn-message-private.h \
+ mn-message.c mn-message.h mn-pending-mailbox-private.h \
mn-pending-mailbox.c mn-pending-mailbox.h mn-shell-private.h \
mn-shell.c mn-shell.h mn-system-mailbox-properties-private.h \
mn-system-mailbox-properties.c mn-system-mailbox-properties.h \
mn-unsupported-mailbox-private.h mn-unsupported-mailbox.c \
mn-unsupported-mailbox.h mn-uri-private.h mn-uri.c mn-uri.h \
- mn-md5.c mn-md5.h mn-client-session.c mn-client-session.h \
- mn-soup.c mn-soup.h mn-ssl.c mn-ssl.h mn-sasl.c mn-sasl.h \
- eggtrayicon.c eggtrayicon.h mn-conf.c mn-conf.h \
+ mn-sgml-ref.c mn-sgml-ref.h mn-soup.c mn-soup.h \
+ mn-sgml-entities.h mn-md5.c mn-md5.h mn-client-session.c \
+ mn-client-session.h mn-ssl.c mn-ssl.h mn-sasl.c mn-sasl.h \
+ mn-message-mime.c mn-message-mime.h eggtrayicon.c \
+ eggtrayicon.h mn-conf.c mn-conf.h \
mn-mailbox-properties-dialog.c mn-mailbox-properties-dialog.h \
mn-mailbox-properties-util.c mn-mailbox-properties-util.h \
mn-mailbox-properties.c mn-mailbox-properties.h mn-main.c \
mn-properties.c mn-properties.h mn-stock.c mn-stock.h \
- mn-util.c mn-util.h mn-vfs.c mn-vfs.h
+ mn-summary-dialog.c mn-summary-dialog.h mn-summary-popup.c \
+ mn-summary-popup.h mn-summary.c mn-summary.h mn-util.c \
+ mn-util.h mn-vfs.c mn-vfs.h
am__objects_1 =
am__objects_2 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \
$(am__objects_1) $(am__objects_1) $(am__objects_1) \
- $(am__objects_1) $(am__objects_1)
+ $(am__objects_1) $(am__objects_1) $(am__objects_1)
@WITH_MBOX_TRUE@am__objects_3 = mn-mbox-mailbox.$(OBJEXT)
@WITH_MH_TRUE@am__objects_4 = mn-mh-mailbox.$(OBJEXT)
@WITH_MAILDIR_TRUE@am__objects_5 = mn-maildir-mailbox.$(OBJEXT)
@@ -119,33 +128,39 @@ am__objects_2 = $(am__objects_1) $(am__objects_1) $(am__objects_1) \
@WITH_GMAIL_TRUE@am__objects_10 = \
@WITH_GMAIL_TRUE@ mn-gmail-mailbox-properties.$(OBJEXT) \
@WITH_GMAIL_TRUE@ mn-gmail-mailbox.$(OBJEXT)
-am__objects_11 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \
+@WITH_MIME_TRUE@am__objects_11 = mn-gmime-stream-vfs.$(OBJEXT)
+am__objects_12 = $(am__objects_3) $(am__objects_4) $(am__objects_5) \
$(am__objects_6) $(am__objects_7) $(am__objects_8) \
- $(am__objects_9) $(am__objects_10) mn-about-dialog.$(OBJEXT) \
+ $(am__objects_9) $(am__objects_10) $(am__objects_11) \
+ mn-about-dialog.$(OBJEXT) \
mn-autodetect-mailbox-properties.$(OBJEXT) \
mn-automation.$(OBJEXT) mn-blinking-image.$(OBJEXT) \
mn-mail-icon.$(OBJEXT) mn-mailbox-view.$(OBJEXT) \
mn-mailbox.$(OBJEXT) mn-mailboxes.$(OBJEXT) \
+ mn-message-label.$(OBJEXT) mn-message.$(OBJEXT) \
mn-pending-mailbox.$(OBJEXT) mn-shell.$(OBJEXT) \
mn-system-mailbox-properties.$(OBJEXT) \
mn-unsupported-mailbox.$(OBJEXT) mn-uri.$(OBJEXT)
-@WITH_POP3_TRUE@am__objects_12 = mn-md5.$(OBJEXT)
-@WITH_POP3_OR_IMAP_TRUE@am__objects_13 = mn-client-session.$(OBJEXT)
-@HAVE_SOUP_TRUE@am__objects_14 = mn-soup.$(OBJEXT)
-@WITH_SSL_TRUE@am__objects_15 = mn-ssl.$(OBJEXT)
-@WITH_SASL_TRUE@am__objects_16 = mn-sasl.$(OBJEXT)
+@WITH_GMAIL_TRUE@am__objects_13 = mn-sgml-ref.$(OBJEXT) \
+@WITH_GMAIL_TRUE@ mn-soup.$(OBJEXT)
+@WITH_POP3_TRUE@am__objects_14 = mn-md5.$(OBJEXT)
+@WITH_POP3_OR_IMAP_TRUE@am__objects_15 = mn-client-session.$(OBJEXT)
+@WITH_SSL_TRUE@am__objects_16 = mn-ssl.$(OBJEXT)
+@WITH_SASL_TRUE@am__objects_17 = mn-sasl.$(OBJEXT)
+@WITH_MIME_TRUE@am__objects_18 = mn-message-mime.$(OBJEXT)
am_mail_notification_OBJECTS = $(am__objects_1) $(am__objects_2) \
- $(am__objects_11) $(am__objects_12) $(am__objects_13) \
+ $(am__objects_12) $(am__objects_13) $(am__objects_1) \
$(am__objects_14) $(am__objects_15) $(am__objects_16) \
- eggtrayicon.$(OBJEXT) mn-conf.$(OBJEXT) \
- mn-mailbox-properties-dialog.$(OBJEXT) \
+ $(am__objects_17) $(am__objects_18) eggtrayicon.$(OBJEXT) \
+ mn-conf.$(OBJEXT) mn-mailbox-properties-dialog.$(OBJEXT) \
mn-mailbox-properties-util.$(OBJEXT) \
mn-mailbox-properties.$(OBJEXT) mn-main.$(OBJEXT) \
- mn-properties.$(OBJEXT) mn-stock.$(OBJEXT) mn-util.$(OBJEXT) \
- mn-vfs.$(OBJEXT)
-am__objects_17 = MNAutomation-common.$(OBJEXT) \
+ mn-properties.$(OBJEXT) mn-stock.$(OBJEXT) \
+ mn-summary-dialog.$(OBJEXT) mn-summary-popup.$(OBJEXT) \
+ mn-summary.$(OBJEXT) mn-util.$(OBJEXT) mn-vfs.$(OBJEXT)
+am__objects_19 = MNAutomation-common.$(OBJEXT) \
MNAutomation-stubs.$(OBJEXT) MNAutomation-skels.$(OBJEXT)
-nodist_mail_notification_OBJECTS = $(am__objects_17)
+nodist_mail_notification_OBJECTS = $(am__objects_19)
mail_notification_OBJECTS = $(am_mail_notification_OBJECTS) \
$(nodist_mail_notification_OBJECTS)
mail_notification_LDADD = $(LDADD)
@@ -165,6 +180,7 @@ am__depfiles_maybe = depfiles
@AMDEP_TRUE@ ./$(DEPDIR)/mn-conf.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-gmail-mailbox-properties.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-gmail-mailbox.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-gmime-stream-vfs.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-imap-mailbox-properties.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-imap-mailbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-mail-icon.Po \
@@ -177,15 +193,22 @@ am__depfiles_maybe = depfiles
@AMDEP_TRUE@ ./$(DEPDIR)/mn-maildir-mailbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-main.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-mbox-mailbox.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mn-md5.Po ./$(DEPDIR)/mn-mh-mailbox.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-md5.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-message-label.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-message-mime.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-message.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-mh-mailbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-pending-mailbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-pi-mailbox-properties.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-pop3-mailbox-properties.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-pop3-mailbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-properties.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mn-sasl.Po ./$(DEPDIR)/mn-shell.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mn-soup.Po ./$(DEPDIR)/mn-ssl.Po \
-@AMDEP_TRUE@ ./$(DEPDIR)/mn-stock.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-sasl.Po ./$(DEPDIR)/mn-sgml-ref.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-shell.Po ./$(DEPDIR)/mn-soup.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-ssl.Po ./$(DEPDIR)/mn-stock.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-summary-dialog.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-summary-popup.Po \
+@AMDEP_TRUE@ ./$(DEPDIR)/mn-summary.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-sylpheed-mailbox.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-system-mailbox-properties.Po \
@AMDEP_TRUE@ ./$(DEPDIR)/mn-unsupported-mailbox.Po \
@@ -232,6 +255,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -239,9 +264,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -315,6 +337,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -429,7 +453,27 @@ target_alias = @target_alias@
@WITH_GMAIL_TRUE@ mn-gmail-mailbox.c \
@WITH_GMAIL_TRUE@ mn-gmail-mailbox.h
-@HAVE_SOUP_TRUE@soup_sources = mn-soup.c mn-soup.h
+@WITH_GMAIL_TRUE@gmail_sources = \
+@WITH_GMAIL_TRUE@ mn-sgml-ref.c \
+@WITH_GMAIL_TRUE@ mn-sgml-ref.h \
+@WITH_GMAIL_TRUE@ mn-soup.c \
+@WITH_GMAIL_TRUE@ mn-soup.h
+
+@WITH_GMAIL_TRUE@gmail_built_sources = \
+@WITH_GMAIL_TRUE@ mn-sgml-entities.h
+
+@WITH_MIME_TRUE@mime_gob_sources = \
+@WITH_MIME_TRUE@ mn-gmime-stream-vfs.gob
+
+@WITH_MIME_TRUE@mime_gob_built_sources = \
+@WITH_MIME_TRUE@ mn-gmime-stream-vfs-private.h \
+@WITH_MIME_TRUE@ mn-gmime-stream-vfs.c \
+@WITH_MIME_TRUE@ mn-gmime-stream-vfs.h
+
+@WITH_MIME_TRUE@mime_sources = \
+@WITH_MIME_TRUE@ mn-message-mime.c \
+@WITH_MIME_TRUE@ mn-message-mime.h
+
@WITH_SSL_TRUE@ssl_sources = mn-ssl.c mn-ssl.h
@WITH_SASL_TRUE@sasl_sources = mn-sasl.c mn-sasl.h
idl_sources = MNAutomation.idl
@@ -448,6 +492,7 @@ gob_sources = \
$(pi_gob_sources) \
$(sylpheed_gob_sources) \
$(gmail_gob_sources) \
+ $(mime_gob_sources) \
mn-about-dialog.gob \
mn-autodetect-mailbox-properties.gob \
mn-automation.gob \
@@ -456,6 +501,8 @@ gob_sources = \
mn-mailbox-view.gob \
mn-mailbox.gob \
mn-mailboxes.gob \
+ mn-message-label.gob \
+ mn-message.gob \
mn-pending-mailbox.gob \
mn-shell.gob \
mn-system-mailbox-properties.gob \
@@ -471,6 +518,7 @@ gob_built_sources = \
$(pi_gob_built_sources) \
$(sylpheed_gob_built_sources) \
$(gmail_gob_built_sources) \
+ $(mime_gob_built_sources) \
mn-about-dialog-private.h \
mn-about-dialog.c \
mn-about-dialog.h \
@@ -495,6 +543,12 @@ gob_built_sources = \
mn-mailboxes-private.h \
mn-mailboxes.c \
mn-mailboxes.h \
+ mn-message-label-private.h \
+ mn-message-label.c \
+ mn-message-label.h \
+ mn-message-private.h \
+ mn-message.c \
+ mn-message.h \
mn-pending-mailbox-private.h \
mn-pending-mailbox.c \
mn-pending-mailbox.h \
@@ -516,11 +570,13 @@ mail_notification_SOURCES = \
$(idl_sources) \
$(gob_sources) \
$(gob_built_sources) \
+ $(gmail_sources) \
+ $(gmail_built_sources) \
$(md5_sources) \
$(client_session_sources) \
- $(soup_sources) \
$(ssl_sources) \
$(sasl_sources) \
+ $(mime_sources) \
eggtrayicon.c \
eggtrayicon.h \
mn-conf.c \
@@ -536,13 +592,23 @@ mail_notification_SOURCES = \
mn-properties.h \
mn-stock.c \
mn-stock.h \
+ mn-summary-dialog.c \
+ mn-summary-dialog.h \
+ mn-summary-popup.c \
+ mn-summary-popup.h \
+ mn-summary.c \
+ mn-summary.h \
mn-util.c \
mn-util.h \
mn-vfs.c \
mn-vfs.h
-BUILT_SOURCES = $(idl_built_sources) $(gob_built_sources)
-AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
+BUILT_SOURCES = \
+ $(idl_built_sources) \
+ $(gob_built_sources) \
+ $(gmail_built_sources)
+
+AM_CPPFLAGS = $(WARN_CFLAGS) $(GNOME_CFLAGS) $(GMIME_CFLAGS) $(SOUP_CFLAGS) $(OPENSSL_CFLAGS) $(SASL_CFLAGS) \
-I$(top_srcdir) \
-DPREFIX="\"$(prefix)\"" \
-DSYSCONFDIR="\"$(sysconfdir)\"" \
@@ -552,9 +618,11 @@ AM_CPPFLAGS = $(WARN_CFLAGS) $(G_ASSERTIONS) $(GNOME_CFLAGS) $(SOUP_CFLAGS) $(OP
-DUIDIR="\"$(pkgdatadir)/ui\"" \
-DG_LOG_DOMAIN="\"$(PACKAGE)\""
-AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
+AM_LDFLAGS = $(INTLLIBS) $(GNOME_LIBS) $(GMIME_LIBS) $(SOUP_LIBS) $(OPENSSL_LIBS) $(SASL_LIBS)
CLEANFILES = $(idl_built_sources)
-MAINTAINERCLEANFILES = $(gob_built_sources)
+MAINTAINERCLEANFILES = $(gob_built_sources) $(gmail_built_sources)
+entity_sets = xhtml-lat1.ent xhtml-special.ent xhtml-symbol.ent
+EXTRA_DIST = ent2h.sh $(entity_sets)
all: $(BUILT_SOURCES)
$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -635,6 +703,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-conf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmail-mailbox-properties.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmail-mailbox.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-gmime-stream-vfs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-imap-mailbox-properties.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-imap-mailbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mail-icon.Po@am__quote@
@@ -648,6 +717,9 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-main.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mbox-mailbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-md5.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message-label.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message-mime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-message.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-mh-mailbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pending-mailbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pi-mailbox-properties.Po@am__quote@
@@ -655,10 +727,14 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-pop3-mailbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-properties.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sasl.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sgml-ref.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-shell.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-soup.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-ssl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-stock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-summary-dialog.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-summary-popup.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-summary.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-sylpheed-mailbox.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-system-mailbox-properties.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mn-unsupported-mailbox.Po@am__quote@
@@ -792,8 +868,8 @@ distclean-generic:
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
- -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
@@ -859,6 +935,9 @@ uninstall-am: uninstall-binPROGRAMS uninstall-info-am
$(GOB2) --always-private-header --exit-on-warn $<
%-common.c %-stubs.c %-skels.c %.h: %.idl $(ORBIT_IDL)
$(ORBIT_IDL) -I$(LIBBONOBO_IDL) -I$(BONOBO_ACTIVATION_IDL) $<
+
+mn-sgml-entities.h: ent2h.sh $(entity_sets)
+ ./ent2h.sh $(entity_sets) > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
diff --git a/src/ent2h.sh b/src/ent2h.sh
@@ -0,0 +1,51 @@
+#!/bin/sh
+#
+# ent2h.sh - convert one or more SGML entity sets to a C header
+# $Id: ent2h.sh,v 1.1 2004/09/20 02:02:54 jylefort Exp $
+#
+# Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+cat <<EOF
+/*
+ * mn-sgml-entities.h - SGML entities table
+ *
+ * Generated automatically by ent2h.sh.
+ * Do not edit this file directly.
+ */
+
+#ifndef _MN_SGML_ENTITIES_H
+#define _MN_SGML_ENTITIES_H
+
+static const struct
+{
+ const char *name;
+ unsigned long character;
+} entities[] = {
+EOF
+
+for f in $@; do
+ echo ""
+ echo " /* $f */"
+ grep '^<!ENTITY' $f \
+ | sed -E 's/^<!ENTITY ([a-zA-Z]+).*"&#([0-9]+);.*$/ { "\1", \2 },/'
+done
+
+cat <<EOF
+};
+
+#endif /* _MN_SGML_ENTITIES_H */
+EOF
diff --git a/src/mn-about-dialog-private.h b/src/mn-about-dialog-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_ABOUT_DIALOG_PRIVATE_H__
#define __MN_ABOUT_DIALOG_PRIVATE_H__
diff --git a/src/mn-about-dialog.c b/src/mn-about-dialog.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-about-dialog.h"
#include "mn-about-dialog-private.h"
@@ -21,11 +23,11 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 23 "mn-about-dialog.gob"
+#line 25 "mn-about-dialog.gob"
#include "mn-util.h"
-#line 29 "mn-about-dialog.c"
+#line 31 "mn-about-dialog.c"
/* self casting macros */
#define SELF(x) MN_ABOUT_DIALOG(x)
#define SELF_CONST(x) MN_ABOUT_DIALOG_CONST(x)
@@ -99,14 +101,14 @@ mn_about_dialog_class_init (MNAboutDialogClass * c G_GNUC_UNUSED)
}
#undef __GOB_FUNCTION__
-#line 29 "mn-about-dialog.gob"
+#line 31 "mn-about-dialog.gob"
static void
mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
-#line 106 "mn-about-dialog.c"
+#line 108 "mn-about-dialog.c"
{
#define __GOB_FUNCTION__ "MN:About:Dialog::init"
{
-#line 30 "mn-about-dialog.gob"
+#line 32 "mn-about-dialog.gob"
const char *authors[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
const char *documenters[] = { "Jean-Yves Lefort <jylefort@brutele.be>", NULL };
@@ -121,6 +123,7 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
_("A Mail Notification Icon"),
authors,
documenters,
+ /* translator: replace with your name and email */
_("Jean-Yves Lefort <jylefort@brutele.be>"),
logo);
g_object_unref(logo);
@@ -129,23 +132,23 @@ mn_about_dialog_init (MNAboutDialog * self G_GNUC_UNUSED)
gtk_window_set_icon(GTK_WINDOW(self), icon);
g_object_unref(icon);
-#line 133 "mn-about-dialog.c"
+#line 136 "mn-about-dialog.c"
}
}
#undef __GOB_FUNCTION__
-#line 53 "mn-about-dialog.gob"
+#line 56 "mn-about-dialog.gob"
GtkWidget *
mn_about_dialog_new (void)
-#line 143 "mn-about-dialog.c"
+#line 146 "mn-about-dialog.c"
{
#define __GOB_FUNCTION__ "MN:About:Dialog::new"
{
-#line 55 "mn-about-dialog.gob"
+#line 58 "mn-about-dialog.gob"
return GTK_WIDGET(GET_NEW);
}}
-#line 151 "mn-about-dialog.c"
+#line 154 "mn-about-dialog.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-about-dialog.gob b/src/mn-about-dialog.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "config.h"
#include <gnome.h>
@@ -41,6 +43,7 @@ class MN:About:Dialog from Gnome:About
_("A Mail Notification Icon"),
authors,
documenters,
+ /* translator: replace with your name and email */
_("Jean-Yves Lefort <jylefort@brutele.be>"),
logo);
g_object_unref(logo);
diff --git a/src/mn-about-dialog.h b/src/mn-about-dialog.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-auth-combo-box-private.h b/src/mn-auth-combo-box-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_AUTH_COMBO_BOX_PRIVATE_H__
#define __MN_AUTH_COMBO_BOX_PRIVATE_H__
diff --git a/src/mn-auth-combo-box.c b/src/mn-auth-combo-box.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-auth-combo-box.h"
#include "mn-auth-combo-box-private.h"
@@ -21,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-auth-combo-box.gob"
+#line 24 "mn-auth-combo-box.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -37,7 +39,7 @@
N_COLUMNS
};
-#line 41 "mn-auth-combo-box.c"
+#line 43 "mn-auth-combo-box.c"
/* self casting macros */
#define SELF(x) MN_AUTH_COMBO_BOX(x)
#define SELF_CONST(x) MN_AUTH_COMBO_BOX_CONST(x)
@@ -137,14 +139,14 @@ mn_auth_combo_box_class_init (MNAuthComboBoxClass * c G_GNUC_UNUSED)
}
}
#undef __GOB_FUNCTION__
-#line 84 "mn-auth-combo-box.gob"
+#line 86 "mn-auth-combo-box.gob"
static void
mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
-#line 144 "mn-auth-combo-box.c"
+#line 146 "mn-auth-combo-box.c"
{
#define __GOB_FUNCTION__ "MN:Auth:Combo:Box::init"
{
-#line 85 "mn-auth-combo-box.gob"
+#line 87 "mn-auth-combo-box.gob"
GtkListStore *store;
GtkCellRenderer *renderer;
@@ -183,7 +185,7 @@ mn_auth_combo_box_init (MNAuthComboBox * self G_GNUC_UNUSED)
self_set_active_mechanism(self, NULL);
-#line 187 "mn-auth-combo-box.c"
+#line 189 "mn-auth-combo-box.c"
}
}
#undef __GOB_FUNCTION__
@@ -202,7 +204,7 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_ACTIVE_MECHANISM:
{
-#line 42 "mn-auth-combo-box.gob"
+#line 44 "mn-auth-combo-box.gob"
const char *mechanism = g_value_get_string(VAL);
GtkTreeModel *model;
@@ -231,7 +233,7 @@ ___object_set_property (GObject *object,
valid = gtk_tree_model_iter_next(model, &iter);
}
-#line 235 "mn-auth-combo-box.c"
+#line 237 "mn-auth-combo-box.c"
}
break;
default:
@@ -260,7 +262,7 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_ACTIVE_MECHANISM:
{
-#line 71 "mn-auth-combo-box.gob"
+#line 73 "mn-auth-combo-box.gob"
char *mechanism = NULL;
GtkTreeModel *model;
@@ -273,7 +275,7 @@ ___object_get_property (GObject *object,
g_value_set_string(VAL, mechanism);
g_free(mechanism);
-#line 277 "mn-auth-combo-box.c"
+#line 279 "mn-auth-combo-box.c"
}
break;
default:
@@ -289,48 +291,48 @@ ___object_get_property (GObject *object,
#undef __GOB_FUNCTION__
-#line 71 "mn-auth-combo-box.gob"
+#line 73 "mn-auth-combo-box.gob"
gchar *
mn_auth_combo_box_get_active_mechanism (MNAuthComboBox * self)
-#line 296 "mn-auth-combo-box.c"
+#line 298 "mn-auth-combo-box.c"
{
#define __GOB_FUNCTION__ "MN:Auth:Combo:Box::get_active_mechanism"
{
-#line 40 "mn-auth-combo-box.gob"
+#line 42 "mn-auth-combo-box.gob"
gchar* val; g_object_get (G_OBJECT (self), "active_mechanism", &val, NULL); return val;
}}
-#line 303 "mn-auth-combo-box.c"
+#line 305 "mn-auth-combo-box.c"
#undef __GOB_FUNCTION__
-#line 42 "mn-auth-combo-box.gob"
+#line 44 "mn-auth-combo-box.gob"
void
mn_auth_combo_box_set_active_mechanism (MNAuthComboBox * self, gchar * val)
-#line 309 "mn-auth-combo-box.c"
+#line 311 "mn-auth-combo-box.c"
{
#define __GOB_FUNCTION__ "MN:Auth:Combo:Box::set_active_mechanism"
{
-#line 40 "mn-auth-combo-box.gob"
+#line 42 "mn-auth-combo-box.gob"
g_object_set (G_OBJECT (self), "active_mechanism", val, NULL);
}}
-#line 316 "mn-auth-combo-box.c"
+#line 318 "mn-auth-combo-box.c"
#undef __GOB_FUNCTION__
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
void
mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const char * label)
-#line 323 "mn-auth-combo-box.c"
+#line 325 "mn-auth-combo-box.c"
{
#define __GOB_FUNCTION__ "MN:Auth:Combo:Box::append"
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
g_return_if_fail (self != NULL);
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
g_return_if_fail (MN_IS_AUTH_COMBO_BOX (self));
-#line 124 "mn-auth-combo-box.gob"
+#line 126 "mn-auth-combo-box.gob"
g_return_if_fail (label != NULL);
-#line 332 "mn-auth-combo-box.c"
+#line 334 "mn-auth-combo-box.c"
{
-#line 126 "mn-auth-combo-box.gob"
+#line 128 "mn-auth-combo-box.gob"
GtkTreeModel *model;
GtkTreeIter iter;
@@ -343,19 +345,19 @@ mn_auth_combo_box_append (MNAuthComboBox * self, const char * mechanism, const c
COLUMN_LABEL, label,
-1);
}}
-#line 347 "mn-auth-combo-box.c"
+#line 349 "mn-auth-combo-box.c"
#undef __GOB_FUNCTION__
-#line 139 "mn-auth-combo-box.gob"
+#line 141 "mn-auth-combo-box.gob"
GtkWidget *
mn_auth_combo_box_new (void)
-#line 353 "mn-auth-combo-box.c"
+#line 355 "mn-auth-combo-box.c"
{
#define __GOB_FUNCTION__ "MN:Auth:Combo:Box::new"
{
-#line 141 "mn-auth-combo-box.gob"
+#line 143 "mn-auth-combo-box.gob"
return GTK_WIDGET(GET_NEW);
}}
-#line 361 "mn-auth-combo-box.c"
+#line 363 "mn-auth-combo-box.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-auth-combo-box.gob b/src/mn-auth-combo-box.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
diff --git a/src/mn-auth-combo-box.h b/src/mn-auth-combo-box.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-autodetect-mailbox-properties-private.h b/src/mn-autodetect-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
#define __MN_AUTODETECT_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,11 +10,11 @@ extern "C" {
#endif /* __cplusplus */
struct _MNAutodetectMailboxPropertiesPrivate {
-#line 37 "mn-autodetect-mailbox-properties.gob"
+#line 39 "mn-autodetect-mailbox-properties.gob"
GtkSizeGroup * size_group;
-#line 49 "mn-autodetect-mailbox-properties.gob"
+#line 51 "mn-autodetect-mailbox-properties.gob"
GtkTooltips * tooltips;
-#line 50 "mn-autodetect-mailbox-properties.gob"
+#line 52 "mn-autodetect-mailbox-properties.gob"
GtkWidget * location_entry;
#line 20 "mn-autodetect-mailbox-properties-private.h"
};
diff --git a/src/mn-autodetect-mailbox-properties.c b/src/mn-autodetect-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-autodetect-mailbox-properties.h"
#include "mn-autodetect-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-autodetect-mailbox-properties.gob"
+#line 24 "mn-autodetect-mailbox-properties.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -31,7 +33,7 @@
static char *current_folder_uri = NULL;
-#line 35 "mn-autodetect-mailbox-properties.c"
+#line 37 "mn-autodetect-mailbox-properties.c"
/* self casting macros */
#define SELF(x) MN_AUTODETECT_MAILBOX_PROPERTIES(x)
#define SELF_CONST(x) MN_AUTODETECT_MAILBOX_PROPERTIES_CONST(x)
@@ -78,11 +80,11 @@ static GtkHBoxClass *parent_class = NULL;
static void
___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
{
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
iface->set_uri = self_set_uri;
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
iface->get_uri = self_get_uri;
-#line 86 "mn-autodetect-mailbox-properties.c"
+#line 88 "mn-autodetect-mailbox-properties.c"
}
GType
@@ -144,12 +146,12 @@ ___dispose (GObject *obj_self)
MNAutodetectMailboxProperties *self G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 37 "mn-autodetect-mailbox-properties.gob"
- if(self->_priv->size_group) { ((*(void (*)(void *))g_object_unref)) (self->_priv->size_group); self->_priv->size_group = NULL; }
-#line 150 "mn-autodetect-mailbox-properties.c"
-#line 49 "mn-autodetect-mailbox-properties.gob"
- if(self->_priv->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->_priv->tooltips); self->_priv->tooltips = NULL; }
-#line 153 "mn-autodetect-mailbox-properties.c"
+#line 39 "mn-autodetect-mailbox-properties.gob"
+ if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 152 "mn-autodetect-mailbox-properties.c"
+#line 51 "mn-autodetect-mailbox-properties.gob"
+ if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
+#line 155 "mn-autodetect-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
@@ -158,11 +160,10 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::finalize"
- MNAutodetectMailboxProperties *self G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self);
- gpointer priv = self->_priv;
+ MNAutodetectMailboxProperties *self G_GNUC_UNUSED = MN_AUTODETECT_MAILBOX_PROPERTIES (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
- g_free (priv);
}
#undef __GOB_FUNCTION__
@@ -170,10 +171,10 @@ static void
mn_autodetect_mailbox_properties_init (MNAutodetectMailboxProperties * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::init"
- o->_priv = g_new0 (MNAutodetectMailboxPropertiesPrivate, 1);
-#line 49 "mn-autodetect-mailbox-properties.gob"
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNAutodetectMailboxPropertiesPrivate);
+#line 51 "mn-autodetect-mailbox-properties.gob"
o->_priv->tooltips = mn_tooltips_new();
-#line 177 "mn-autodetect-mailbox-properties.c"
+#line 178 "mn-autodetect-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
static void
@@ -182,11 +183,13 @@ mn_autodetect_mailbox_properties_class_init (MNAutodetectMailboxPropertiesClass
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ g_type_class_add_private(c,sizeof(MNAutodetectMailboxPropertiesPrivate));
+
parent_class = g_type_class_ref (GTK_TYPE_HBOX);
-#line 52 "mn-autodetect-mailbox-properties.gob"
+#line 54 "mn-autodetect-mailbox-properties.gob"
g_object_class->constructor = ___1_mn_autodetect_mailbox_properties_constructor;
-#line 190 "mn-autodetect-mailbox-properties.c"
+#line 193 "mn-autodetect-mailbox-properties.c"
g_object_class->dispose = ___dispose;
g_object_class->finalize = ___finalize;
g_object_class->get_property = ___object_get_property;
@@ -219,9 +222,9 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_SIZE_GROUP:
{
-#line 38 "mn-autodetect-mailbox-properties.gob"
+#line 40 "mn-autodetect-mailbox-properties.gob"
{ GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 225 "mn-autodetect-mailbox-properties.c"
+#line 228 "mn-autodetect-mailbox-properties.c"
}
break;
default:
@@ -250,28 +253,28 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_LABEL:
{
-#line 35 "mn-autodetect-mailbox-properties.gob"
+#line 37 "mn-autodetect-mailbox-properties.gob"
g_value_set_string(VAL, _("<span style=\"italic\">autodetect</span>"));
-#line 256 "mn-autodetect-mailbox-properties.c"
+#line 259 "mn-autodetect-mailbox-properties.c"
}
break;
case PROP_SIZE_GROUP:
{
-#line 38 "mn-autodetect-mailbox-properties.gob"
+#line 40 "mn-autodetect-mailbox-properties.gob"
g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 263 "mn-autodetect-mailbox-properties.c"
+#line 266 "mn-autodetect-mailbox-properties.c"
}
break;
case PROP_COMPLETE:
{
-#line 42 "mn-autodetect-mailbox-properties.gob"
+#line 44 "mn-autodetect-mailbox-properties.gob"
const char *location;
location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry));
g_value_set_boolean(VAL, *location != 0);
-#line 275 "mn-autodetect-mailbox-properties.c"
+#line 278 "mn-autodetect-mailbox-properties.c"
}
break;
default:
@@ -288,10 +291,10 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 52 "mn-autodetect-mailbox-properties.gob"
+#line 54 "mn-autodetect-mailbox-properties.gob"
static GObject *
___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 295 "mn-autodetect-mailbox-properties.c"
+#line 298 "mn-autodetect-mailbox-properties.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -299,7 +302,7 @@ ___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, gui
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::constructor"
{
-#line 54 "mn-autodetect-mailbox-properties.gob"
+#line 56 "mn-autodetect-mailbox-properties.gob"
GObject *object;
Self *self;
@@ -338,52 +341,52 @@ ___1_mn_autodetect_mailbox_properties_constructor (GType type G_GNUC_UNUSED, gui
gtk_size_group_add_widget(selfp->size_group, label);
- g_signal_connect(G_OBJECT(selfp->location_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(self_browse_clicked_h), self);
+ g_signal_connect(selfp->location_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
return object;
}}
-#line 347 "mn-autodetect-mailbox-properties.c"
+#line 350 "mn-autodetect-mailbox-properties.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
static void
mn_autodetect_mailbox_properties_entry_changed_h (GtkEditable * editable, gpointer user_data)
-#line 354 "mn-autodetect-mailbox-properties.c"
+#line 357 "mn-autodetect-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::entry_changed_h"
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (editable != NULL);
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (GTK_IS_EDITABLE (editable));
-#line 98 "mn-autodetect-mailbox-properties.gob"
+#line 100 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 363 "mn-autodetect-mailbox-properties.c"
+#line 366 "mn-autodetect-mailbox-properties.c"
{
-#line 101 "mn-autodetect-mailbox-properties.gob"
+#line 103 "mn-autodetect-mailbox-properties.gob"
Self *self = user_data;
g_object_notify(G_OBJECT(self), "complete");
}}
-#line 370 "mn-autodetect-mailbox-properties.c"
+#line 373 "mn-autodetect-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
static void
mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer user_data)
-#line 376 "mn-autodetect-mailbox-properties.c"
+#line 379 "mn-autodetect-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::browse_clicked_h"
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (button != NULL);
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (GTK_IS_BUTTON (button));
-#line 106 "mn-autodetect-mailbox-properties.gob"
+#line 108 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 385 "mn-autodetect-mailbox-properties.c"
+#line 388 "mn-autodetect-mailbox-properties.c"
{
-#line 109 "mn-autodetect-mailbox-properties.gob"
+#line 111 "mn-autodetect-mailbox-properties.gob"
Self *self = user_data;
GtkWidget *toplevel;
@@ -408,7 +411,7 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer
else if (current_folder_uri)
gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(chooser), current_folder_uri);
- g_signal_connect(G_OBJECT(chooser), "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
+ g_signal_connect(chooser, "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
if (gtk_dialog_run(GTK_DIALOG(chooser)) == 1)
{
@@ -421,71 +424,71 @@ mn_autodetect_mailbox_properties_browse_clicked_h (GtkButton * button, gpointer
gtk_widget_destroy(chooser);
}}
-#line 425 "mn-autodetect-mailbox-properties.c"
+#line 428 "mn-autodetect-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 147 "mn-autodetect-mailbox-properties.gob"
+#line 149 "mn-autodetect-mailbox-properties.gob"
static void
mn_autodetect_mailbox_properties_current_folder_changed_h (GtkFileChooser * chooser, gpointer user_data)
-#line 431 "mn-autodetect-mailbox-properties.c"
+#line 434 "mn-autodetect-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::current_folder_changed_h"
-#line 147 "mn-autodetect-mailbox-properties.gob"
+#line 149 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (chooser != NULL);
-#line 147 "mn-autodetect-mailbox-properties.gob"
+#line 149 "mn-autodetect-mailbox-properties.gob"
g_return_if_fail (GTK_IS_FILE_CHOOSER (chooser));
-#line 438 "mn-autodetect-mailbox-properties.c"
+#line 441 "mn-autodetect-mailbox-properties.c"
{
-#line 150 "mn-autodetect-mailbox-properties.gob"
+#line 152 "mn-autodetect-mailbox-properties.gob"
g_free(current_folder_uri);
current_folder_uri = gtk_file_chooser_get_current_folder_uri(chooser);
}}
-#line 445 "mn-autodetect-mailbox-properties.c"
+#line 448 "mn-autodetect-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
static gboolean
mn_autodetect_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
-#line 451 "mn-autodetect-mailbox-properties.c"
+#line 454 "mn-autodetect-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::set_uri"
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (gboolean )0);
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 155 "mn-autodetect-mailbox-properties.gob"
+#line 157 "mn-autodetect-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 462 "mn-autodetect-mailbox-properties.c"
+#line 465 "mn-autodetect-mailbox-properties.c"
{
-#line 158 "mn-autodetect-mailbox-properties.gob"
+#line 160 "mn-autodetect-mailbox-properties.gob"
gtk_entry_set_text(GTK_ENTRY(SELF(self)->_priv->location_entry), uri->text);
return TRUE;
}}
-#line 469 "mn-autodetect-mailbox-properties.c"
+#line 472 "mn-autodetect-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
static MNURI *
mn_autodetect_mailbox_properties_get_uri (MNMailboxProperties * self)
-#line 475 "mn-autodetect-mailbox-properties.c"
+#line 478 "mn-autodetect-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Autodetect:Mailbox:Properties::get_uri"
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
g_return_val_if_fail (self != NULL, (MNURI * )0);
-#line 163 "mn-autodetect-mailbox-properties.gob"
+#line 165 "mn-autodetect-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNURI * )0);
-#line 482 "mn-autodetect-mailbox-properties.c"
+#line 485 "mn-autodetect-mailbox-properties.c"
{
-#line 165 "mn-autodetect-mailbox-properties.gob"
+#line 167 "mn-autodetect-mailbox-properties.gob"
const char *location;
location = gtk_entry_get_text(GTK_ENTRY(SELF(self)->_priv->location_entry));
return mn_uri_new(location);
}}
-#line 491 "mn-autodetect-mailbox-properties.c"
+#line 494 "mn-autodetect-mailbox-properties.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-autodetect-mailbox-properties.gob b/src/mn-autodetect-mailbox-properties.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
@@ -89,8 +91,8 @@ class MN:Autodetect:Mailbox:Properties from Gtk:HBox (interface MN:Mailbox:Prope
gtk_size_group_add_widget(selfp->size_group, label);
- g_signal_connect(G_OBJECT(selfp->location_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(self_browse_clicked_h), self);
+ g_signal_connect(selfp->location_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(button, "clicked", G_CALLBACK(self_browse_clicked_h), self);
return object;
}
@@ -130,7 +132,7 @@ class MN:Autodetect:Mailbox:Properties from Gtk:HBox (interface MN:Mailbox:Prope
else if (current_folder_uri)
gtk_file_chooser_set_current_folder_uri(GTK_FILE_CHOOSER(chooser), current_folder_uri);
- g_signal_connect(G_OBJECT(chooser), "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
+ g_signal_connect(chooser, "current-folder-changed", G_CALLBACK(self_current_folder_changed_h), self);
if (gtk_dialog_run(GTK_DIALOG(chooser)) == 1)
{
diff --git a/src/mn-autodetect-mailbox-properties.h b/src/mn-autodetect-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-automation-private.h b/src/mn-automation-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_AUTOMATION_PRIVATE_H__
#define __MN_AUTOMATION_PRIVATE_H__
diff --git a/src/mn-automation.c b/src/mn-automation.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-automation.h"
#include "mn-automation-private.h"
@@ -21,12 +23,14 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 23 "mn-automation.gob"
+#line 25 "mn-automation.gob"
+#include "mn-summary-dialog.h"
+#include "mn-summary-popup.h"
#include "mn-properties.h"
#include "mn-shell.h"
-#line 30 "mn-automation.c"
+#line 34 "mn-automation.c"
/* self casting macros */
#define SELF(x) MN_AUTOMATION(x)
#define SELF_CONST(x) MN_AUTOMATION_CONST(x)
@@ -45,8 +49,10 @@ static void mn_automation_init (MNAutomation * o) G_GNUC_UNUSED;
static void mn_automation_class_init (MNAutomationClass * c) G_GNUC_UNUSED;
static void mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
static void mn_automation_report (PortableServer_Servant servant, CORBA_char ** report, CORBA_Environment * env) G_GNUC_UNUSED;
+static void mn_automation_displayMailSummary (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
static void mn_automation_displayProperties (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
static void mn_automation_displayAbout (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
+static void mn_automation_closePopup (PortableServer_Servant servant, CORBA_Environment * env) G_GNUC_UNUSED;
/* pointer to the class of our parent */
static BonoboObjectClass *parent_class = NULL;
@@ -54,8 +60,10 @@ static BonoboObjectClass *parent_class = NULL;
/* Short form macros */
#define self_update mn_automation_update
#define self_report mn_automation_report
+#define self_displayMailSummary mn_automation_displayMailSummary
#define self_displayProperties mn_automation_displayProperties
#define self_displayAbout mn_automation_displayAbout
+#define self_closePopup mn_automation_closePopup
#define self_new mn_automation_new
GType
mn_automation_get_type (void)
@@ -116,90 +124,124 @@ mn_automation_class_init (MNAutomationClass * c G_GNUC_UNUSED)
parent_class = g_type_class_ref (BONOBO_TYPE_OBJECT);
-#line 30 "mn-automation.gob"
+#line 34 "mn-automation.gob"
c->_epv.update = self_update;
-#line 37 "mn-automation.gob"
+#line 41 "mn-automation.gob"
c->_epv.report = self_report;
-#line 46 "mn-automation.gob"
+#line 50 "mn-automation.gob"
+ c->_epv.displayMailSummary = self_displayMailSummary;
+#line 57 "mn-automation.gob"
c->_epv.displayProperties = self_displayProperties;
-#line 53 "mn-automation.gob"
+#line 64 "mn-automation.gob"
c->_epv.displayAbout = self_displayAbout;
-#line 128 "mn-automation.c"
+#line 71 "mn-automation.gob"
+ c->_epv.closePopup = self_closePopup;
+#line 140 "mn-automation.c"
}
#undef __GOB_FUNCTION__
-#line 30 "mn-automation.gob"
+#line 34 "mn-automation.gob"
static void
mn_automation_update (PortableServer_Servant servant, CORBA_Environment * env)
-#line 137 "mn-automation.c"
+#line 149 "mn-automation.c"
{
#define __GOB_FUNCTION__ "MN:Automation::update"
{
-#line 32 "mn-automation.gob"
+#line 36 "mn-automation.gob"
g_return_if_fail(mn_shell != NULL);
mn_mailboxes_check(mn_shell->mailboxes);
}}
-#line 146 "mn-automation.c"
+#line 158 "mn-automation.c"
#undef __GOB_FUNCTION__
-#line 37 "mn-automation.gob"
+#line 41 "mn-automation.gob"
static void
mn_automation_report (PortableServer_Servant servant, CORBA_char ** report, CORBA_Environment * env)
-#line 152 "mn-automation.c"
+#line 164 "mn-automation.c"
{
#define __GOB_FUNCTION__ "MN:Automation::report"
{
-#line 41 "mn-automation.gob"
+#line 45 "mn-automation.gob"
g_return_if_fail(mn_shell != NULL);
mn_shell_report(mn_shell, report);
}}
-#line 161 "mn-automation.c"
+#line 173 "mn-automation.c"
+#undef __GOB_FUNCTION__
+
+#line 50 "mn-automation.gob"
+static void
+mn_automation_displayMailSummary (PortableServer_Servant servant, CORBA_Environment * env)
+#line 179 "mn-automation.c"
+{
+#define __GOB_FUNCTION__ "MN:Automation::displayMailSummary"
+{
+#line 52 "mn-automation.gob"
+
+ g_return_if_fail(mn_shell != NULL);
+ mn_summary_dialog_display();
+ }}
+#line 188 "mn-automation.c"
#undef __GOB_FUNCTION__
-#line 46 "mn-automation.gob"
+#line 57 "mn-automation.gob"
static void
mn_automation_displayProperties (PortableServer_Servant servant, CORBA_Environment * env)
-#line 167 "mn-automation.c"
+#line 194 "mn-automation.c"
{
#define __GOB_FUNCTION__ "MN:Automation::displayProperties"
{
-#line 48 "mn-automation.gob"
+#line 59 "mn-automation.gob"
g_return_if_fail(mn_shell != NULL);
mn_properties_display();
}}
-#line 176 "mn-automation.c"
+#line 203 "mn-automation.c"
#undef __GOB_FUNCTION__
-#line 53 "mn-automation.gob"
+#line 64 "mn-automation.gob"
static void
mn_automation_displayAbout (PortableServer_Servant servant, CORBA_Environment * env)
-#line 182 "mn-automation.c"
+#line 209 "mn-automation.c"
{
#define __GOB_FUNCTION__ "MN:Automation::displayAbout"
{
-#line 55 "mn-automation.gob"
+#line 66 "mn-automation.gob"
g_return_if_fail(mn_shell != NULL);
mn_shell_display_about(mn_shell);
}}
-#line 191 "mn-automation.c"
+#line 218 "mn-automation.c"
+#undef __GOB_FUNCTION__
+
+#line 71 "mn-automation.gob"
+static void
+mn_automation_closePopup (PortableServer_Servant servant, CORBA_Environment * env)
+#line 224 "mn-automation.c"
+{
+#define __GOB_FUNCTION__ "MN:Automation::closePopup"
+{
+#line 73 "mn-automation.gob"
+
+ g_return_if_fail(mn_shell != NULL);
+ mn_summary_popup_destroy();
+ }}
+#line 233 "mn-automation.c"
#undef __GOB_FUNCTION__
-#line 60 "mn-automation.gob"
+#line 78 "mn-automation.gob"
MNAutomation *
mn_automation_new (void)
-#line 197 "mn-automation.c"
+#line 239 "mn-automation.c"
{
#define __GOB_FUNCTION__ "MN:Automation::new"
{
-#line 62 "mn-automation.gob"
+#line 80 "mn-automation.gob"
return GET_NEW;
}}
-#line 205 "mn-automation.c"
+#line 247 "mn-automation.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-automation.gob b/src/mn-automation.gob
@@ -16,11 +16,15 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <libbonobo.h>
#include "MNAutomation.h"
%}
%{
+#include "mn-summary-dialog.h"
+#include "mn-summary-popup.h"
#include "mn-properties.h"
#include "mn-shell.h"
%}
@@ -44,6 +48,13 @@ class MN:Automation from Bonobo:Object (BonoboObject GNOME_MNAutomation)
}
BonoboObject private void
+ displayMailSummary (PortableServer_Servant servant, CORBA_Environment *env)
+ {
+ g_return_if_fail(mn_shell != NULL);
+ mn_summary_dialog_display();
+ }
+
+ BonoboObject private void
displayProperties (PortableServer_Servant servant, CORBA_Environment *env)
{
g_return_if_fail(mn_shell != NULL);
@@ -57,6 +68,13 @@ class MN:Automation from Bonobo:Object (BonoboObject GNOME_MNAutomation)
mn_shell_display_about(mn_shell);
}
+ BonoboObject private void
+ closePopup (PortableServer_Servant servant, CORBA_Environment *env)
+ {
+ g_return_if_fail(mn_shell != NULL);
+ mn_summary_popup_destroy();
+ }
+
public MNAutomation *
new (void)
{
diff --git a/src/mn-automation.h b/src/mn-automation.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-blinking-image-private.h b/src/mn-blinking-image-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_BLINKING_IMAGE_PRIVATE_H__
#define __MN_BLINKING_IMAGE_PRIVATE_H__
@@ -10,15 +10,15 @@ extern "C" {
#endif /* __cplusplus */
struct _MNBlinkingImagePrivate {
-#line 29 "mn-blinking-image.gob"
+#line 31 "mn-blinking-image.gob"
gboolean blinking;
-#line 49 "mn-blinking-image.gob"
+#line 51 "mn-blinking-image.gob"
unsigned int timeout_id;
-#line 50 "mn-blinking-image.gob"
+#line 52 "mn-blinking-image.gob"
gboolean is_on;
-#line 51 "mn-blinking-image.gob"
+#line 53 "mn-blinking-image.gob"
GdkPixbuf * on_pixbuf;
-#line 52 "mn-blinking-image.gob"
+#line 54 "mn-blinking-image.gob"
GdkPixbuf * off_pixbuf;
#line 24 "mn-blinking-image-private.h"
};
diff --git a/src/mn-blinking-image.c b/src/mn-blinking-image.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -23,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-blinking-image.gob"
+#line 24 "mn-blinking-image.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -47,6 +47,7 @@ static void ___object_set_property (GObject *object, guint property_id, const GV
static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
static void mn_blinking_image_init (MNBlinkingImage * o) G_GNUC_UNUSED;
static void mn_blinking_image_class_init (MNBlinkingImageClass * c) G_GNUC_UNUSED;
+static void ___3_mn_blinking_image_finalize (GObject * object) G_GNUC_UNUSED;
static void mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on) G_GNUC_UNUSED;
static gboolean mn_blinking_image_timeout_cb (gpointer data) G_GNUC_UNUSED;
@@ -114,12 +115,12 @@ ___dispose (GObject *obj_self)
MNBlinkingImage *self G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 51 "mn-blinking-image.gob"
- if(self->_priv->on_pixbuf) { ((*(void (*)(void *))g_object_unref)) (self->_priv->on_pixbuf); self->_priv->on_pixbuf = NULL; }
-#line 120 "mn-blinking-image.c"
-#line 52 "mn-blinking-image.gob"
- if(self->_priv->off_pixbuf) { ((*(void (*)(void *))g_object_unref)) (self->_priv->off_pixbuf); self->_priv->off_pixbuf = NULL; }
-#line 123 "mn-blinking-image.c"
+#line 53 "mn-blinking-image.gob"
+ if(self->_priv->on_pixbuf) { g_object_unref ((gpointer) self->_priv->on_pixbuf); self->_priv->on_pixbuf = NULL; }
+#line 121 "mn-blinking-image.c"
+#line 54 "mn-blinking-image.gob"
+ if(self->_priv->off_pixbuf) { g_object_unref ((gpointer) self->_priv->off_pixbuf); self->_priv->off_pixbuf = NULL; }
+#line 124 "mn-blinking-image.c"
}
#undef __GOB_FUNCTION__
@@ -128,20 +129,11 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
- MNBlinkingImage *self G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
- gpointer priv = self->_priv;
- if(G_OBJECT_CLASS(parent_class)->finalize) \
- (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#define timeout_id (self->_priv->timeout_id)
-#define VAR timeout_id
- {
-#line 49 "mn-blinking-image.gob"
- if (VAR) g_source_remove(VAR); }
-#line 141 "mn-blinking-image.c"
- memset(&timeout_id, 0, sizeof(timeout_id));
-#undef VAR
-#undef timeout_id
- g_free (priv);
+ MNBlinkingImage *self G_GNUC_UNUSED = MN_BLINKING_IMAGE (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 56 "mn-blinking-image.gob"
+ ___3_mn_blinking_image_finalize(obj_self);
+#line 137 "mn-blinking-image.c"
}
#undef __GOB_FUNCTION__
@@ -149,10 +141,10 @@ static void
mn_blinking_image_init (MNBlinkingImage * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::init"
- o->_priv = g_new0 (MNBlinkingImagePrivate, 1);
-#line 49 "mn-blinking-image.gob"
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNBlinkingImagePrivate);
+#line 47 "mn-blinking-image.gob"
o->_priv->is_on = TRUE;
-#line 156 "mn-blinking-image.c"
+#line 148 "mn-blinking-image.c"
}
#undef __GOB_FUNCTION__
static void
@@ -161,10 +153,14 @@ mn_blinking_image_class_init (MNBlinkingImageClass * c G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:Blinking:Image::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ g_type_class_add_private(c,sizeof(MNBlinkingImagePrivate));
+
parent_class = g_type_class_ref (GTK_TYPE_IMAGE);
- g_object_class->dispose = ___dispose;
+#line 56 "mn-blinking-image.gob"
g_object_class->finalize = ___finalize;
+#line 163 "mn-blinking-image.c"
+ g_object_class->dispose = ___dispose;
g_object_class->get_property = ___object_get_property;
g_object_class->set_property = ___object_set_property;
{
@@ -197,7 +193,7 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_BLINKING:
{
-#line 33 "mn-blinking-image.gob"
+#line 35 "mn-blinking-image.gob"
if (selfp->blinking)
{
@@ -209,7 +205,7 @@ ___object_set_property (GObject *object,
if (selfp->blinking)
selfp->timeout_id = g_timeout_add(500, self_timeout_cb, self);
-#line 213 "mn-blinking-image.c"
+#line 209 "mn-blinking-image.c"
}
break;
default:
@@ -238,11 +234,11 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_BLINKING:
{
-#line 45 "mn-blinking-image.gob"
+#line 47 "mn-blinking-image.gob"
g_value_set_boolean(VAL, selfp->blinking);
-#line 246 "mn-blinking-image.c"
+#line 242 "mn-blinking-image.c"
}
break;
default:
@@ -259,63 +255,91 @@ ___object_get_property (GObject *object,
-#line 45 "mn-blinking-image.gob"
+#line 47 "mn-blinking-image.gob"
gboolean
mn_blinking_image_get_blinking (MNBlinkingImage * self)
-#line 266 "mn-blinking-image.c"
+#line 262 "mn-blinking-image.c"
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::get_blinking"
{
-#line 30 "mn-blinking-image.gob"
+#line 32 "mn-blinking-image.gob"
gboolean val; g_object_get (G_OBJECT (self), "blinking", &val, NULL); return val;
}}
-#line 273 "mn-blinking-image.c"
+#line 269 "mn-blinking-image.c"
#undef __GOB_FUNCTION__
-#line 33 "mn-blinking-image.gob"
+#line 35 "mn-blinking-image.gob"
void
mn_blinking_image_set_blinking (MNBlinkingImage * self, gboolean val)
-#line 279 "mn-blinking-image.c"
+#line 275 "mn-blinking-image.c"
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::set_blinking"
{
-#line 30 "mn-blinking-image.gob"
+#line 32 "mn-blinking-image.gob"
g_object_set (G_OBJECT (self), "blinking", val, NULL);
}}
-#line 286 "mn-blinking-image.c"
+#line 282 "mn-blinking-image.c"
#undef __GOB_FUNCTION__
-#line 54 "mn-blinking-image.gob"
+#line 56 "mn-blinking-image.gob"
+static void
+___3_mn_blinking_image_finalize (GObject * object G_GNUC_UNUSED)
+#line 288 "mn-blinking-image.c"
+#define PARENT_HANDLER(___object) \
+ { if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Blinking:Image::finalize"
+#line 56 "mn-blinking-image.gob"
+ g_return_if_fail (object != NULL);
+#line 56 "mn-blinking-image.gob"
+ g_return_if_fail (G_IS_OBJECT (object));
+#line 298 "mn-blinking-image.c"
+{
+#line 58 "mn-blinking-image.gob"
+
+ Self *self = SELF(object);
+
+ if (selfp->timeout_id)
+ g_source_remove(selfp->timeout_id);
+
+ PARENT_HANDLER(object);
+ }}
+#line 309 "mn-blinking-image.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 67 "mn-blinking-image.gob"
static void
mn_blinking_image_update (MNBlinkingImage * self, gboolean is_on)
-#line 292 "mn-blinking-image.c"
+#line 316 "mn-blinking-image.c"
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::update"
-#line 54 "mn-blinking-image.gob"
+#line 67 "mn-blinking-image.gob"
g_return_if_fail (self != NULL);
-#line 54 "mn-blinking-image.gob"
+#line 67 "mn-blinking-image.gob"
g_return_if_fail (MN_IS_BLINKING_IMAGE (self));
-#line 299 "mn-blinking-image.c"
+#line 323 "mn-blinking-image.c"
{
-#line 56 "mn-blinking-image.gob"
+#line 69 "mn-blinking-image.gob"
gtk_image_set_from_pixbuf(GTK_IMAGE(self), is_on ? selfp->on_pixbuf : selfp->off_pixbuf);
selfp->is_on = is_on;
}}
-#line 306 "mn-blinking-image.c"
+#line 330 "mn-blinking-image.c"
#undef __GOB_FUNCTION__
-#line 61 "mn-blinking-image.gob"
+#line 74 "mn-blinking-image.gob"
static gboolean
mn_blinking_image_timeout_cb (gpointer data)
-#line 312 "mn-blinking-image.c"
+#line 336 "mn-blinking-image.c"
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::timeout_cb"
-#line 61 "mn-blinking-image.gob"
+#line 74 "mn-blinking-image.gob"
g_return_val_if_fail (data != NULL, (gboolean )0);
-#line 317 "mn-blinking-image.c"
+#line 341 "mn-blinking-image.c"
{
-#line 63 "mn-blinking-image.gob"
+#line 76 "mn-blinking-image.gob"
Self *self = data;
@@ -325,20 +349,20 @@ mn_blinking_image_timeout_cb (gpointer data)
return TRUE;
}}
-#line 329 "mn-blinking-image.c"
+#line 353 "mn-blinking-image.c"
#undef __GOB_FUNCTION__
-#line 73 "mn-blinking-image.gob"
+#line 86 "mn-blinking-image.gob"
GtkWidget *
mn_blinking_image_new_from_stock (const char * stock_id, GtkIconSize icon_size)
-#line 335 "mn-blinking-image.c"
+#line 359 "mn-blinking-image.c"
{
#define __GOB_FUNCTION__ "MN:Blinking:Image::new_from_stock"
-#line 73 "mn-blinking-image.gob"
+#line 86 "mn-blinking-image.gob"
g_return_val_if_fail (stock_id != NULL, (GtkWidget * )0);
-#line 340 "mn-blinking-image.c"
+#line 364 "mn-blinking-image.c"
{
-#line 76 "mn-blinking-image.gob"
+#line 89 "mn-blinking-image.gob"
Self *self;
int width, height;
@@ -361,5 +385,5 @@ mn_blinking_image_new_from_stock (const char * stock_id, GtkIconSize icon_size)
return GTK_WIDGET(self);
}}
-#line 365 "mn-blinking-image.c"
+#line 389 "mn-blinking-image.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-blinking-image.gob b/src/mn-blinking-image.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
@@ -46,11 +48,22 @@ class MN:Blinking:Image from Gtk:Image
g_value_set_boolean(VAL, selfp->blinking);
};
- private unsigned int timeout_id destroy { if (VAR) g_source_remove(VAR); };
+ private unsigned int timeout_id;
private gboolean is_on = TRUE; /* is currently displaying the on pixbuf? */
private GdkPixbuf *on_pixbuf unrefwith g_object_unref;
private GdkPixbuf *off_pixbuf unrefwith g_object_unref;
+ override (G:Object) void
+ finalize (G:Object *object (check null type))
+ {
+ Self *self = SELF(object);
+
+ if (selfp->timeout_id)
+ g_source_remove(selfp->timeout_id);
+
+ PARENT_HANDLER(object);
+ }
+
private void
update (self, gboolean is_on)
{
diff --git a/src/mn-blinking-image.h b/src/mn-blinking-image.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-client-session.c b/src/mn-client-session.c
@@ -48,7 +48,7 @@
/*** cpp *********************************************************************/
#define READ_BUFSIZE 2048
-
+
/*** types *******************************************************************/
struct _MNClientSession
@@ -63,6 +63,8 @@ struct _MNClientSession
MNClientSessionState *state;
char *error;
MNClientSessionPrivate *private;
+ GByteArray *input_buffer;
+ unsigned int bytes_to_remove;
#ifdef WITH_SSL
SSL *ssl;
@@ -106,6 +108,8 @@ static gboolean mn_client_session_run_untrusted_dialog (const char *hostname,
static int mn_client_session_enter_state (MNClientSession *session, int id);
static gboolean mn_client_session_handle_input (MNClientSession *session, const char *input);
+static void mn_client_session_prepare_input_buffer (MNClientSession *session);
+
#ifdef WITH_SASL
static int mn_client_session_write_base64 (MNClientSession *session,
const char *buf,
@@ -132,7 +136,7 @@ mn_client_session_run (MNClientSessionState *states,
{
MNClientSession session;
struct addrinfo *addrinfo;
- GString *input_buffer;
+ const char *line;
g_return_val_if_fail(states != NULL, FALSE);
g_return_val_if_fail(callbacks != NULL, FALSE);
@@ -170,70 +174,11 @@ mn_client_session_run (MNClientSessionState *states,
mn_client_session_enter_state(&session, MN_CLIENT_SESSION_INITIAL_STATE);
- input_buffer = g_string_new(NULL);
- while (TRUE)
- {
- char buf[READ_BUFSIZE];
- ssize_t bytes_read;
- const char *in = NULL;
- unsigned int inlen;
- char *terminator;
- gboolean cont = TRUE;
-
-#ifdef WITH_SSL
- if (session.ssl)
- bytes_read = SSL_read(session.ssl, buf, sizeof(buf));
- else
-#endif /* WITH_SSL */
- do
- bytes_read = read(session.s, buf, sizeof(buf));
- while (bytes_read < 0 && errno == EINTR);
-
- if (bytes_read <= 0)
- {
-#ifdef WITH_SSL
- if (session.ssl)
- mn_client_session_error(&session, _("unable to read from server: %s"), mn_ssl_get_error());
- else
-#endif /* WITH_SSL */
- {
- if (bytes_read == 0)
- mn_client_session_error(&session, _("unable to read from server: EOF"));
- else
- mn_client_session_error(&session, _("unable to read from server: %s"), g_strerror(errno));
- }
- break; /* end */
- }
-
-#ifdef WITH_SASL
- if (session.sasl_ssf)
- {
- if (sasl_decode(session.sasl_conn, buf, bytes_read, &in, &inlen) != SASL_OK)
- {
- mn_client_session_error(&session, _("unable to decode data using SASL: %s"), sasl_errdetail(session.sasl_conn));
- break; /* end */
- }
- }
-#endif /* WITH_SASL */
-
- if (! in)
- {
- in = buf;
- inlen = bytes_read;
- }
-
- g_string_append_len(input_buffer, in, inlen);
- while (cont && (terminator = strstr(input_buffer->str, "\r\n")))
- {
- *terminator = 0;
- cont = mn_client_session_handle_input(&session, input_buffer->str);
- g_string_erase(input_buffer, 0, terminator - input_buffer->str + 2);
- }
-
- if (! cont)
- break;
- }
- g_string_free(input_buffer, TRUE);
+ session.input_buffer = g_byte_array_new();
+ while ((line = mn_client_session_read_line(&session)))
+ if (! mn_client_session_handle_input(&session, line))
+ break;
+ g_byte_array_free(session.input_buffer, TRUE);
end:
g_free(session.hostname);
@@ -564,8 +509,6 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
g_return_val_if_fail(session != NULL, FALSE);
g_return_val_if_fail(input != NULL, FALSE);
- mn_client_session_notice(session, "< %s", input);
-
response = session->callbacks->response_new(session, input, session->private);
if (response)
{
@@ -597,7 +540,7 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
result = mn_client_session_enter_state(session, result);
else /* custom result */
{
- g_return_val_if_fail(session->callbacks->custom_handler != NULL, NULL);
+ g_return_val_if_fail(session->callbacks->custom_handler != NULL, FALSE);
result = session->callbacks->custom_handler(session, response, result, session->private);
}
goto loop;
@@ -614,6 +557,152 @@ mn_client_session_handle_input (MNClientSession *session, const char *input)
return cont;
}
+static void
+mn_client_session_prepare_input_buffer (MNClientSession *session)
+{
+ g_return_if_fail(session != NULL);
+
+ if (session->bytes_to_remove)
+ g_byte_array_remove_range(session->input_buffer, 0, session->bytes_to_remove);
+}
+
+static gboolean
+mn_client_session_fill_input_buffer (MNClientSession *session)
+{
+ char buf[READ_BUFSIZE];
+ ssize_t bytes_read;
+ const char *in = NULL;
+ unsigned int inlen;
+
+ g_return_val_if_fail(session != NULL, FALSE);
+
+#ifdef WITH_SSL
+ if (session->ssl)
+ bytes_read = SSL_read(session->ssl, buf, sizeof(buf));
+ else
+#endif /* WITH_SSL */
+ do
+ bytes_read = read(session->s, buf, sizeof(buf));
+ while (bytes_read < 0 && errno == EINTR);
+
+ if (bytes_read <= 0)
+ {
+#ifdef WITH_SSL
+ if (session->ssl)
+ mn_client_session_error(session, _("unable to read from server: %s"), mn_ssl_get_error());
+ else
+#endif /* WITH_SSL */
+ {
+ if (bytes_read == 0)
+ mn_client_session_error(session, _("unable to read from server: EOF"));
+ else
+ mn_client_session_error(session, _("unable to read from server: %s"), g_strerror(errno));
+ }
+ return FALSE;
+ }
+
+#ifdef WITH_SASL
+ if (session->sasl_ssf)
+ {
+ if (sasl_decode(session->sasl_conn, buf, bytes_read, &in, &inlen) != SASL_OK)
+ {
+ mn_client_session_error(session, _("unable to decode data using SASL: %s"), sasl_errdetail(session->sasl_conn));
+ return FALSE;
+ }
+ }
+#endif /* WITH_SASL */
+
+ if (! in)
+ {
+ in = buf;
+ inlen = bytes_read;
+ }
+
+ g_byte_array_append(session->input_buffer, in, inlen);
+ return TRUE;
+}
+
+/**
+ * mn_client_session_read:
+ * @session: a #MNClientSession object to read from
+ * @nbytes: the number of bytes to read
+ *
+ * Reads exactly @nbytes from @session. If an error occurs,
+ * mn_client_session_error() will be called on @session.
+ *
+ * Return value: a pointer to a buffer containing @nbytes on success,
+ * %NULL on failure. The pointer will be valid until the
+ * next call to mn_client_session_read() or
+ * mn_client_session_read_line().
+ **/
+gconstpointer
+mn_client_session_read (MNClientSession *session, unsigned int nbytes)
+{
+ GString *printable;
+ int i;
+
+ g_return_val_if_fail(session != NULL, FALSE);
+ g_return_val_if_fail(session->input_buffer != NULL, FALSE);
+ g_return_val_if_fail(nbytes >= 0, FALSE);
+
+ mn_client_session_prepare_input_buffer(session);
+
+ while (session->input_buffer->len < nbytes)
+ if (! mn_client_session_fill_input_buffer(session))
+ return FALSE;
+
+ session->bytes_to_remove = nbytes;
+
+ printable = g_string_new(NULL);
+ for (i = 0; i < nbytes; i++)
+ if (g_ascii_isprint(session->input_buffer->data[i]))
+ g_string_append_c(printable, session->input_buffer->data[i]);
+ else
+ g_string_append_printf(printable, "<%02X>", (int) session->input_buffer->data[i]);
+ mn_client_session_notice(session, "< %s", printable->str);
+ g_string_free(printable, TRUE);
+
+ return session->input_buffer->data;
+}
+
+/**
+ * mn_client_session_read_line:
+ * @session: a #MNClientSession object to read from
+ *
+ * Reads a crlf-terminated line from @session. If an error occurs,
+ * mn_client_session_error() will be called on @session.
+ *
+ * Return value: the line read on success, %NULL on failure. The
+ * pointer will be valid until the next call to
+ * mn_client_session_read() or mn_client_session_read_line().
+ **/
+const char *
+mn_client_session_read_line (MNClientSession *session)
+{
+ char *terminator;
+ const char *line;
+
+ g_return_val_if_fail(session != NULL, NULL);
+ g_return_val_if_fail(session->input_buffer != NULL, NULL);
+
+ mn_client_session_prepare_input_buffer(session);
+
+ while (! (session->input_buffer->data
+ && (terminator = g_strstr_len(session->input_buffer->data,
+ session->input_buffer->len,
+ "\r\n"))))
+ if (! mn_client_session_fill_input_buffer(session))
+ return NULL;
+
+ *terminator = 0;
+ session->bytes_to_remove = terminator - (char *) session->input_buffer->data + 2;
+
+ line = session->input_buffer->data;
+ mn_client_session_notice(session, "< %s", line);
+
+ return line;
+}
+
int
mn_client_session_write (MNClientSession *session,
const char *format,
diff --git a/src/mn-client-session.h b/src/mn-client-session.h
@@ -77,9 +77,12 @@ gboolean mn_client_session_run (MNClientSessionState *states,
MNClientSessionPrivate *private,
GError **err);
+gconstpointer mn_client_session_read (MNClientSession *session, unsigned int nbytes);
+const char *mn_client_session_read_line (MNClientSession *session);
+
int mn_client_session_write (MNClientSession *session,
const char *format,
- ...);
+ ...) G_GNUC_PRINTF(2, 3);
#ifdef WITH_SSL
gboolean mn_client_session_enable_ssl (MNClientSession *session);
@@ -98,9 +101,9 @@ gboolean mn_client_session_sasl_authentication_done (MNClientSession *session);
void mn_client_session_notice (MNClientSession *session,
const char *format,
- ...);
+ ...) G_GNUC_PRINTF(2, 3);
int mn_client_session_error (MNClientSession *session,
const char *format,
- ...);
+ ...) G_GNUC_PRINTF(2, 3);
#endif /* _MN_CLIENT_SESSION_H */
diff --git a/src/mn-conf.c b/src/mn-conf.c
@@ -32,6 +32,9 @@
#define WINDOW_WIDTH_KEY "mn-conf-window-width-key"
#define WINDOW_HEIGHT_KEY "mn-conf-window-height-key"
+#define COMBO_BOX_KEY "mn-conf-combo-box-key"
+#define COMBO_BOX_STRING_COLUMN "mn-conf-combo-box-string-column"
+
/*** types *******************************************************************/
typedef struct
@@ -43,6 +46,16 @@ typedef struct
/*** functions ***************************************************************/
+static void mn_conf_link_combo_box_to_string_update_active (GtkComboBox *combo,
+ int string_column,
+ const char *value);
+static void mn_conf_link_combo_box_to_string_changed_h (GtkComboBox *combo,
+ gpointer user_data);
+static void mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data);
+
static gboolean mn_conf_link_window_h (GtkWidget *widget,
GdkEventConfigure *event,
gpointer user_data);
@@ -100,6 +113,7 @@ mn_conf_unset_obsolete (void)
MN_CONF_LOCAL_NAMESPACE,
MN_CONF_REMOTE_NAMESPACE,
MN_CONF_COMMANDS_CLICKED_NAMESPACE,
+ MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE,
MN_CONF_PREFERENCES_DIALOG
};
int i;
@@ -208,6 +222,100 @@ mn_conf_link (GtkWidget *widget, ...)
va_end(args);
}
+void
+mn_conf_link_combo_box_to_string (GtkComboBox *combo,
+ int string_column,
+ const char *key)
+{
+ char *value;
+ unsigned int notification_id;
+
+ g_return_if_fail(GTK_IS_COMBO_BOX(combo));
+ g_return_if_fail(key != NULL);
+
+ g_object_set_data_full(G_OBJECT(combo), COMBO_BOX_KEY, g_strdup(key), g_free);
+ g_object_set_data(G_OBJECT(combo), COMBO_BOX_STRING_COLUMN, GINT_TO_POINTER(string_column));
+
+ value = eel_gconf_get_string(key);
+ mn_conf_link_combo_box_to_string_update_active(combo, string_column, value);
+ g_free(value);
+
+ g_signal_connect(combo, "changed", G_CALLBACK(mn_conf_link_combo_box_to_string_changed_h), NULL);
+ notification_id = eel_gconf_notification_add(key, mn_conf_link_combo_box_to_string_notify_cb, combo);
+ g_object_weak_ref(G_OBJECT(combo), mn_conf_link_weak_notify_cb, GUINT_TO_POINTER(notification_id));
+}
+
+static void
+mn_conf_link_combo_box_to_string_update_active (GtkComboBox *combo,
+ int string_column,
+ const char *value)
+{
+ g_return_if_fail(GTK_IS_COMBO_BOX(combo));
+
+ if (value)
+ {
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+ gboolean valid;
+
+ model = gtk_combo_box_get_model(combo);
+ valid = gtk_tree_model_get_iter_first(model, &iter);
+
+ while (valid)
+ {
+ char *this_value;
+ gboolean found;
+
+ gtk_tree_model_get(model, &iter, string_column, &this_value, -1);
+ found = this_value && ! strcmp(this_value, value);
+ g_free(this_value);
+
+ if (found)
+ {
+ gtk_combo_box_set_active_iter(combo, &iter);
+ break;
+ }
+
+ valid = gtk_tree_model_iter_next(model, &iter);
+ }
+ }
+}
+
+static void
+mn_conf_link_combo_box_to_string_changed_h (GtkComboBox *combo,
+ gpointer user_data)
+{
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ model = gtk_combo_box_get_model(combo);
+ if (gtk_combo_box_get_active_iter(combo, &iter))
+ {
+ const char *key = g_object_get_data(G_OBJECT(combo), COMBO_BOX_KEY);
+ int string_column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo), COMBO_BOX_STRING_COLUMN));
+ char *value;
+
+ gtk_tree_model_get(model, &iter, string_column, &value, -1);
+ eel_gconf_set_string(key, value);
+ g_free(value);
+ }
+}
+
+static void
+mn_conf_link_combo_box_to_string_notify_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ GtkComboBox *combo = user_data;
+ GConfValue *value = gconf_entry_get_value(entry);
+ int string_column = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo), COMBO_BOX_STRING_COLUMN));
+
+ GDK_THREADS_ENTER();
+ mn_conf_link_combo_box_to_string_update_active(combo, string_column, gconf_value_get_string(value));
+ GDK_THREADS_LEAVE();
+}
+
static gboolean
mn_conf_link_window_h (GtkWidget *widget,
GdkEventConfigure *event,
@@ -507,3 +615,29 @@ mn_conf_set_autostart (gboolean autostart)
}
mn_conf_startup_clients_free(clients);
}
+
+GEnumValue *
+mn_conf_get_enum_value (GType enum_type, const char *key)
+{
+ GEnumClass *enum_class;
+ GEnumValue *enum_value = NULL;
+
+ g_return_val_if_fail(key != NULL, NULL);
+
+ enum_class = g_type_class_ref(enum_type);
+ if (enum_class)
+ {
+ char *nick;
+
+ nick = eel_gconf_get_string(key);
+ if (nick)
+ {
+ enum_value = g_enum_get_value_by_nick(enum_class, nick);
+ g_free(nick);
+ }
+
+ g_type_class_unref(enum_class);
+ }
+
+ return enum_value;
+}
diff --git a/src/mn-conf.h b/src/mn-conf.h
@@ -20,6 +20,7 @@
#define _MN_CONF_H
#include <stdarg.h>
+#include <gtk/gtk.h>
#include <eel/eel.h>
#define MN_CONF_NAMESPACE \
@@ -61,11 +62,11 @@
#define MN_CONF_COMMANDS_CLICKED_COMMAND \
MN_CONF_COMMANDS_CLICKED_NAMESPACE "/command" /* obsolete */
#define MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE \
- MN_CONF_COMMANDS_NAMESPACE "/double-clicked"
+ MN_CONF_COMMANDS_NAMESPACE "/double-clicked" /* obsolete */
#define MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED \
- MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/enabled"
+ MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/enabled" /* obsolete */
#define MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND \
- MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/command"
+ MN_CONF_COMMANDS_DOUBLE_CLICKED_NAMESPACE "/command" /* obsolete */
#define MN_CONF_MAILBOXES \
MN_CONF_NAMESPACE "/mailboxes"
#define MN_CONF_UI_NAMESPACE \
@@ -74,6 +75,12 @@
MN_CONF_UI_NAMESPACE "/preferences-dialog" /* obsolete */
#define MN_CONF_PROPERTIES_DIALOG \
MN_CONF_UI_NAMESPACE "/properties-dialog"
+#define MN_CONF_SUMMARY_DIALOG \
+ MN_CONF_UI_NAMESPACE "/summary-dialog"
+#define MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE \
+ MN_CONF_UI_NAMESPACE "/immediate-notification-error-dialog"
+#define MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW \
+ MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_NAMESPACE "/do-not-show"
#define MN_CONF_ALREADY_RUN \
MN_CONF_NAMESPACE "/already-run"
#define MN_CONF_BLINK_ON_ERRORS \
@@ -82,6 +89,26 @@
MN_CONF_NAMESPACE "/trusted-x509-certificates"
#define MN_CONF_TRUSTED_SERVERS \
MN_CONF_NAMESPACE "/trusted-servers"
+#define MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE \
+ MN_CONF_NAMESPACE "/mail-summary-popup"
+#define MN_CONF_MAIL_SUMMARY_POPUP_ENABLE \
+ MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/enable"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE \
+ MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE \
+ MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/autoclose-delay"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES \
+ MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/minutes"
+#define MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS \
+ MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE "/seconds"
+#define MN_CONF_MAIL_SUMMARY_POPUP_POSITION \
+ MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/position"
+#define MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE \
+ MN_CONF_MAIL_SUMMARY_POPUP_NAMESPACE "/offset"
+#define MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET \
+ MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/horizontal"
+#define MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET \
+ MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE "/vertical"
void mn_conf_init (void);
void mn_conf_unset_obsolete (void);
@@ -91,8 +118,14 @@ void mn_conf_recursive_unset (const char *key,
void mn_conf_link (GtkWidget *widget,
...);
+void mn_conf_link_combo_box_to_string (GtkComboBox *combo,
+ int string_column,
+ const char *key);
gboolean mn_conf_get_autostart (void);
void mn_conf_set_autostart (gboolean autostart);
+GEnumValue *mn_conf_get_enum_value (GType enum_type,
+ const char *key);
+
#endif /* _MN_CONF_H */
diff --git a/src/mn-gmail-mailbox-private.h b/src/mn-gmail-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_GMAIL_MAILBOX_PRIVATE_H__
#define __MN_GMAIL_MAILBOX_PRIVATE_H__
@@ -9,12 +9,20 @@
extern "C" {
#endif /* __cplusplus */
+
+#line 25 "mn-gmail-mailbox.gob"
+
+#include "mn-soup.h"
+
+#line 18 "mn-gmail-mailbox-private.h"
struct _MNGmailMailboxPrivate {
-#line 37 "mn-gmail-mailbox.gob"
+#line 47 "mn-gmail-mailbox.gob"
+ SoupSession * session;
+#line 48 "mn-gmail-mailbox.gob"
GHashTable * cookies;
-#line 38 "mn-gmail-mailbox.gob"
+#line 49 "mn-gmail-mailbox.gob"
gboolean logged_in;
-#line 18 "mn-gmail-mailbox-private.h"
+#line 26 "mn-gmail-mailbox-private.h"
};
#ifdef __cplusplus
diff --git a/src/mn-gmail-mailbox-properties-private.h b/src/mn-gmail-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
#define __MN_GMAIL_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,13 +10,13 @@ extern "C" {
#endif /* __cplusplus */
struct _MNGmailMailboxPropertiesPrivate {
-#line 35 "mn-gmail-mailbox-properties.gob"
+#line 37 "mn-gmail-mailbox-properties.gob"
GtkSizeGroup * size_group;
-#line 50 "mn-gmail-mailbox-properties.gob"
+#line 52 "mn-gmail-mailbox-properties.gob"
GtkWidget * username_entry;
-#line 51 "mn-gmail-mailbox-properties.gob"
+#line 53 "mn-gmail-mailbox-properties.gob"
GtkWidget * password_entry;
-#line 52 "mn-gmail-mailbox-properties.gob"
+#line 54 "mn-gmail-mailbox-properties.gob"
GtkTooltips * tooltips;
#line 22 "mn-gmail-mailbox-properties-private.h"
};
diff --git a/src/mn-gmail-mailbox-properties.c b/src/mn-gmail-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-gmail-mailbox-properties.h"
#include "mn-gmail-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-gmail-mailbox-properties.gob"
+#line 24 "mn-gmail-mailbox-properties.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -29,7 +31,7 @@
#include "mn-mailbox-properties-util.h"
#include "mn-util.h"
-#line 33 "mn-gmail-mailbox-properties.c"
+#line 35 "mn-gmail-mailbox-properties.c"
/* self casting macros */
#define SELF(x) MN_GMAIL_MAILBOX_PROPERTIES(x)
#define SELF_CONST(x) MN_GMAIL_MAILBOX_PROPERTIES_CONST(x)
@@ -72,11 +74,11 @@ static GtkVBoxClass *parent_class = NULL;
static void
___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
{
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
iface->set_uri = self_set_uri;
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
iface->get_uri = self_get_uri;
-#line 80 "mn-gmail-mailbox-properties.c"
+#line 82 "mn-gmail-mailbox-properties.c"
}
GType
@@ -138,12 +140,12 @@ ___dispose (GObject *obj_self)
MNGmailMailboxProperties *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 35 "mn-gmail-mailbox-properties.gob"
- if(self->_priv->size_group) { ((*(void (*)(void *))g_object_unref)) (self->_priv->size_group); self->_priv->size_group = NULL; }
-#line 144 "mn-gmail-mailbox-properties.c"
-#line 52 "mn-gmail-mailbox-properties.gob"
- if(self->_priv->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->_priv->tooltips); self->_priv->tooltips = NULL; }
-#line 147 "mn-gmail-mailbox-properties.c"
+#line 37 "mn-gmail-mailbox-properties.gob"
+ if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 146 "mn-gmail-mailbox-properties.c"
+#line 54 "mn-gmail-mailbox-properties.gob"
+ if(self->_priv->tooltips) { g_object_unref ((gpointer) self->_priv->tooltips); self->_priv->tooltips = NULL; }
+#line 149 "mn-gmail-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
@@ -152,11 +154,10 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::finalize"
- MNGmailMailboxProperties *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self);
- gpointer priv = self->_priv;
+ MNGmailMailboxProperties *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX_PROPERTIES (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
- g_free (priv);
}
#undef __GOB_FUNCTION__
@@ -164,10 +165,10 @@ static void
mn_gmail_mailbox_properties_init (MNGmailMailboxProperties * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::init"
- o->_priv = g_new0 (MNGmailMailboxPropertiesPrivate, 1);
-#line 52 "mn-gmail-mailbox-properties.gob"
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGmailMailboxPropertiesPrivate);
+#line 54 "mn-gmail-mailbox-properties.gob"
o->_priv->tooltips = mn_tooltips_new();
-#line 171 "mn-gmail-mailbox-properties.c"
+#line 172 "mn-gmail-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
static void
@@ -176,11 +177,13 @@ mn_gmail_mailbox_properties_class_init (MNGmailMailboxPropertiesClass * c G_GNUC
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ g_type_class_add_private(c,sizeof(MNGmailMailboxPropertiesPrivate));
+
parent_class = g_type_class_ref (GTK_TYPE_VBOX);
-#line 54 "mn-gmail-mailbox-properties.gob"
+#line 56 "mn-gmail-mailbox-properties.gob"
g_object_class->constructor = ___1_mn_gmail_mailbox_properties_constructor;
-#line 184 "mn-gmail-mailbox-properties.c"
+#line 187 "mn-gmail-mailbox-properties.c"
g_object_class->dispose = ___dispose;
g_object_class->finalize = ___finalize;
g_object_class->get_property = ___object_get_property;
@@ -213,9 +216,9 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_SIZE_GROUP:
{
-#line 36 "mn-gmail-mailbox-properties.gob"
+#line 38 "mn-gmail-mailbox-properties.gob"
{ GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 219 "mn-gmail-mailbox-properties.c"
+#line 222 "mn-gmail-mailbox-properties.c"
}
break;
default:
@@ -244,21 +247,21 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_LABEL:
{
-#line 33 "mn-gmail-mailbox-properties.gob"
+#line 35 "mn-gmail-mailbox-properties.gob"
g_value_set_string(VAL, "Gmail");
-#line 250 "mn-gmail-mailbox-properties.c"
+#line 253 "mn-gmail-mailbox-properties.c"
}
break;
case PROP_SIZE_GROUP:
{
-#line 36 "mn-gmail-mailbox-properties.gob"
+#line 38 "mn-gmail-mailbox-properties.gob"
g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 257 "mn-gmail-mailbox-properties.c"
+#line 260 "mn-gmail-mailbox-properties.c"
}
break;
case PROP_COMPLETE:
{
-#line 40 "mn-gmail-mailbox-properties.gob"
+#line 42 "mn-gmail-mailbox-properties.gob"
const char *username;
const char *password;
@@ -268,7 +271,7 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
g_value_set_boolean(VAL, *username && *password);
-#line 272 "mn-gmail-mailbox-properties.c"
+#line 275 "mn-gmail-mailbox-properties.c"
}
break;
default:
@@ -285,10 +288,10 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 54 "mn-gmail-mailbox-properties.gob"
+#line 56 "mn-gmail-mailbox-properties.gob"
static GObject *
___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 292 "mn-gmail-mailbox-properties.c"
+#line 295 "mn-gmail-mailbox-properties.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -296,7 +299,7 @@ ___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::constructor"
{
-#line 56 "mn-gmail-mailbox-properties.gob"
+#line 58 "mn-gmail-mailbox-properties.gob"
GObject *object;
Self *self;
@@ -326,54 +329,54 @@ ___1_mn_gmail_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_
GTK_ENTRY(selfp->password_entry),
NULL);
- g_signal_connect(G_OBJECT(selfp->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(selfp->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(selfp->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(selfp->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
return object;
}}
-#line 335 "mn-gmail-mailbox-properties.c"
+#line 338 "mn-gmail-mailbox-properties.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
static void
mn_gmail_mailbox_properties_entry_changed_h (GtkEditable * editable, gpointer user_data)
-#line 342 "mn-gmail-mailbox-properties.c"
+#line 345 "mn-gmail-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::entry_changed_h"
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
g_return_if_fail (editable != NULL);
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
g_return_if_fail (GTK_IS_EDITABLE (editable));
-#line 91 "mn-gmail-mailbox-properties.gob"
+#line 93 "mn-gmail-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 351 "mn-gmail-mailbox-properties.c"
+#line 354 "mn-gmail-mailbox-properties.c"
{
-#line 94 "mn-gmail-mailbox-properties.gob"
+#line 96 "mn-gmail-mailbox-properties.gob"
Self *self = user_data;
g_object_notify(G_OBJECT(self), "complete");
}}
-#line 358 "mn-gmail-mailbox-properties.c"
+#line 361 "mn-gmail-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
static gboolean
mn_gmail_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
-#line 364 "mn-gmail-mailbox-properties.c"
+#line 367 "mn-gmail-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::set_uri"
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (gboolean )0);
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 99 "mn-gmail-mailbox-properties.gob"
+#line 101 "mn-gmail-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 375 "mn-gmail-mailbox-properties.c"
+#line 378 "mn-gmail-mailbox-properties.c"
{
-#line 102 "mn-gmail-mailbox-properties.gob"
+#line 104 "mn-gmail-mailbox-properties.gob"
if (MN_URI_IS_GMAIL(uri))
{
@@ -385,22 +388,22 @@ mn_gmail_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
else
return FALSE;
}}
-#line 389 "mn-gmail-mailbox-properties.c"
+#line 392 "mn-gmail-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
static MNURI *
mn_gmail_mailbox_properties_get_uri (MNMailboxProperties * self)
-#line 395 "mn-gmail-mailbox-properties.c"
+#line 398 "mn-gmail-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox:Properties::get_uri"
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
g_return_val_if_fail (self != NULL, (MNURI * )0);
-#line 114 "mn-gmail-mailbox-properties.gob"
+#line 116 "mn-gmail-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNURI * )0);
-#line 402 "mn-gmail-mailbox-properties.c"
+#line 405 "mn-gmail-mailbox-properties.c"
{
-#line 116 "mn-gmail-mailbox-properties.gob"
+#line 118 "mn-gmail-mailbox-properties.gob"
const char *username;
const char *password;
@@ -410,5 +413,5 @@ mn_gmail_mailbox_properties_get_uri (MNMailboxProperties * self)
return mn_uri_new_gmail(username, password);
}}
-#line 414 "mn-gmail-mailbox-properties.c"
+#line 417 "mn-gmail-mailbox-properties.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox-properties.gob b/src/mn-gmail-mailbox-properties.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
@@ -82,8 +84,8 @@ class MN:Gmail:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties
GTK_ENTRY(selfp->password_entry),
NULL);
- g_signal_connect(G_OBJECT(selfp->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(selfp->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(selfp->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(selfp->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
return object;
}
diff --git a/src/mn-gmail-mailbox-properties.h b/src/mn-gmail-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-gmail-mailbox.c b/src/mn-gmail-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -21,20 +21,23 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-gmail-mailbox.gob"
+#line 29 "mn-gmail-mailbox.gob"
#include "config.h"
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <time.h>
#include <glib/gi18n-lib.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libsoup/soup.h>
#include "mn-mailbox-private.h"
#include "mn-util.h"
#include "mn-stock.h"
-#include "mn-soup.h"
+#include "mn-sgml-ref.h"
-#line 38 "mn-gmail-mailbox.c"
+#define MESSAGE_IS_ERROR(message) \
+ (! SOUP_STATUS_IS_SUCCESSFUL((message)->status_code))
+
+#line 41 "mn-gmail-mailbox.c"
/* self casting macros */
#define SELF(x) MN_GMAIL_MAILBOX(x)
#define SELF_CONST(x) MN_GMAIL_MAILBOX_CONST(x)
@@ -52,10 +55,12 @@ typedef MNGmailMailboxClass SelfClass;
static void mn_gmail_mailbox_init (MNGmailMailbox * o) G_GNUC_UNUSED;
static void mn_gmail_mailbox_class_init (MNGmailMailboxClass * class) G_GNUC_UNUSED;
static GObject * ___2_mn_gmail_mailbox_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
-static void ___3_mn_gmail_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
-static gboolean ___4_mn_gmail_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
-static void ___5_mn_gmail_mailbox_impl_check (MNMailbox * mailbox) G_GNUC_UNUSED;
-static void mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri, SoupCallbackFn callback) G_GNUC_UNUSED;
+static gboolean ___3_mn_gmail_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
+static void ___4_mn_gmail_mailbox_impl_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_end_check (MNGmailMailbox * self) G_GNUC_UNUSED;
+static gboolean mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri_string, SoupMessageCallbackFn callback) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_get_from_uri (MNGmailMailbox * self, SoupUri * uri, SoupMessageCallbackFn callback) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_get_from_message (MNGmailMailbox * self, SoupMessage * message, SoupMessageCallbackFn callback) G_GNUC_UNUSED;
static void mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * message) G_GNUC_UNUSED;
static void mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
static void mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message) G_GNUC_UNUSED;
@@ -70,13 +75,17 @@ static char * mn_gmail_mailbox_build_cookie (MNGmailMailbox * self) G_GNUC_UNUSE
static void mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_data) G_GNUC_UNUSED;
static void mn_gmail_mailbox_check_internal (MNGmailMailbox * self) G_GNUC_UNUSED;
static void mn_gmail_mailbox_check_internal_cb (SoupMessage * message, gpointer user_data) G_GNUC_UNUSED;
-static int mn_gmail_mailbox_get_unread_count (SoupMessage * message) G_GNUC_UNUSED;
+static void mn_gmail_mailbox_parse_unread (MNGmailMailbox * self, SoupMessage * message) G_GNUC_UNUSED;
+static time_t mn_gmail_mailbox_parse_date (const char * date) G_GNUC_UNUSED;
/* pointer to the class of our parent */
static MNMailboxClass *parent_class = NULL;
/* Short form macros */
+#define self_end_check mn_gmail_mailbox_end_check
#define self_get mn_gmail_mailbox_get
+#define self_get_from_uri mn_gmail_mailbox_get_from_uri
+#define self_get_from_message mn_gmail_mailbox_get_from_message
#define self_dump_request mn_gmail_mailbox_dump_request
#define self_dump_request_cb mn_gmail_mailbox_dump_request_cb
#define self_dump_response mn_gmail_mailbox_dump_response
@@ -91,7 +100,8 @@ static MNMailboxClass *parent_class = NULL;
#define self_build_cookie_cb mn_gmail_mailbox_build_cookie_cb
#define self_check_internal mn_gmail_mailbox_check_internal
#define self_check_internal_cb mn_gmail_mailbox_check_internal_cb
-#define self_get_unread_count mn_gmail_mailbox_get_unread_count
+#define self_parse_unread mn_gmail_mailbox_parse_unread
+#define self_parse_date mn_gmail_mailbox_parse_date
GType
mn_gmail_mailbox_get_type (void)
{
@@ -139,15 +149,13 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::finalize"
- MNGmailMailbox *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX (obj_self);
- gpointer priv = self->_priv;
-#line 58 "mn-gmail-mailbox.gob"
- ___3_mn_gmail_mailbox_finalize(obj_self);
-#line 147 "mn-gmail-mailbox.c"
-#line 37 "mn-gmail-mailbox.gob"
- if(self->_priv->cookies) { ((*(void (*)(void *))g_hash_table_destroy)) (self->_priv->cookies); self->_priv->cookies = NULL; }
-#line 150 "mn-gmail-mailbox.c"
- g_free (priv);
+ MNGmailMailbox *self G_GNUC_UNUSED = MN_GMAIL_MAILBOX (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+ if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+#line 48 "mn-gmail-mailbox.gob"
+ if(self->_priv->cookies) { g_hash_table_destroy ((gpointer) self->_priv->cookies); self->_priv->cookies = NULL; }
+#line 159 "mn-gmail-mailbox.c"
}
#undef __GOB_FUNCTION__
@@ -155,46 +163,47 @@ static void
mn_gmail_mailbox_init (MNGmailMailbox * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::init"
- o->_priv = g_new0 (MNGmailMailboxPrivate, 1);
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGmailMailboxPrivate);
}
#undef __GOB_FUNCTION__
-#line 40 "mn-gmail-mailbox.gob"
+#line 51 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_class_init (MNGmailMailboxClass * class G_GNUC_UNUSED)
-#line 165 "mn-gmail-mailbox.c"
+#line 173 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+
+ g_type_class_add_private(class,sizeof(MNGmailMailboxPrivate));
MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 46 "mn-gmail-mailbox.gob"
+#line 57 "mn-gmail-mailbox.gob"
g_object_class->constructor = ___2_mn_gmail_mailbox_constructor;
-#line 58 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
+ mn_mailbox_class->impl_is = ___3_mn_gmail_mailbox_impl_is;
+#line 76 "mn-gmail-mailbox.gob"
+ mn_mailbox_class->impl_check = ___4_mn_gmail_mailbox_impl_check;
+#line 189 "mn-gmail-mailbox.c"
g_object_class->finalize = ___finalize;
-#line 65 "mn-gmail-mailbox.gob"
- mn_mailbox_class->impl_is = ___4_mn_gmail_mailbox_impl_is;
-#line 71 "mn-gmail-mailbox.gob"
- mn_mailbox_class->impl_check = ___5_mn_gmail_mailbox_impl_check;
-#line 181 "mn-gmail-mailbox.c"
{
-#line 41 "mn-gmail-mailbox.gob"
+#line 52 "mn-gmail-mailbox.gob"
MN_MAILBOX_CLASS(class)->stock_id = MN_STOCK_GMAIL;
MN_MAILBOX_CLASS(class)->format = "Gmail";
-#line 188 "mn-gmail-mailbox.c"
+#line 197 "mn-gmail-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 46 "mn-gmail-mailbox.gob"
+#line 57 "mn-gmail-mailbox.gob"
static GObject *
___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 198 "mn-gmail-mailbox.c"
+#line 207 "mn-gmail-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -202,118 +211,176 @@ ___2_mn_gmail_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_p
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::constructor"
{
-#line 48 "mn-gmail-mailbox.gob"
+#line 59 "mn-gmail-mailbox.gob"
GObject *object;
object = PARENT_HANDLER(type, n_construct_properties, construct_params);
- mn_soup_use();
+ if (! soup_ssl_supported)
+ mn_mailbox_set_init_error(MN_MAILBOX(object), _("libsoup has not been compiled with SSL/TLS support"));
return object;
}}
-#line 216 "mn-gmail-mailbox.c"
-#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-
-#line 58 "mn-gmail-mailbox.gob"
-static void
-___3_mn_gmail_mailbox_finalize (GObject * object G_GNUC_UNUSED)
-#line 223 "mn-gmail-mailbox.c"
-#define PARENT_HANDLER(___object) \
- { if(G_OBJECT_CLASS(parent_class)->finalize) \
- (* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
-{
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::finalize"
-{
-#line 60 "mn-gmail-mailbox.gob"
-
- mn_soup_unuse();
- PARENT_HANDLER(object);
- }}
-#line 235 "mn-gmail-mailbox.c"
+#line 226 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 65 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
static gboolean
-___4_mn_gmail_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 242 "mn-gmail-mailbox.c"
+___3_mn_gmail_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
+#line 233 "mn-gmail-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::impl_is"
-#line 65 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 65 "mn-gmail-mailbox.gob"
+#line 70 "mn-gmail-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 253 "mn-gmail-mailbox.c"
+#line 244 "mn-gmail-mailbox.c"
{
-#line 67 "mn-gmail-mailbox.gob"
+#line 72 "mn-gmail-mailbox.gob"
return MN_URI_IS_GMAIL(uri);
}}
-#line 259 "mn-gmail-mailbox.c"
+#line 250 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 71 "mn-gmail-mailbox.gob"
+#line 76 "mn-gmail-mailbox.gob"
static void
-___5_mn_gmail_mailbox_impl_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 266 "mn-gmail-mailbox.c"
+___4_mn_gmail_mailbox_impl_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 257 "mn-gmail-mailbox.c"
#define PARENT_HANDLER(___mailbox) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_check)(___mailbox); }
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::impl_check"
-#line 71 "mn-gmail-mailbox.gob"
+#line 76 "mn-gmail-mailbox.gob"
g_return_if_fail (mailbox != NULL);
-#line 71 "mn-gmail-mailbox.gob"
+#line 76 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 276 "mn-gmail-mailbox.c"
+#line 267 "mn-gmail-mailbox.c"
{
-#line 73 "mn-gmail-mailbox.gob"
+#line 78 "mn-gmail-mailbox.gob"
Self *self = SELF(mailbox);
+ selfp->session = mn_soup_session_new();
if (selfp->logged_in)
self_check_internal(self);
else
self_login(self);
}}
-#line 287 "mn-gmail-mailbox.c"
+#line 279 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 82 "mn-gmail-mailbox.gob"
+#line 88 "mn-gmail-mailbox.gob"
static void
-mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri, SoupCallbackFn callback)
-#line 294 "mn-gmail-mailbox.c"
+mn_gmail_mailbox_end_check (MNGmailMailbox * self)
+#line 286 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::end_check"
+#line 88 "mn-gmail-mailbox.gob"
+ g_return_if_fail (self != NULL);
+#line 88 "mn-gmail-mailbox.gob"
+ g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 293 "mn-gmail-mailbox.c"
+{
+#line 90 "mn-gmail-mailbox.gob"
+
+ g_object_unref(selfp->session);
+ mn_mailbox_end_check(MN_MAILBOX(self));
+ }}
+#line 300 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 95 "mn-gmail-mailbox.gob"
+static gboolean
+mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri_string, SoupMessageCallbackFn callback)
+#line 306 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get"
-#line 82 "mn-gmail-mailbox.gob"
+#line 95 "mn-gmail-mailbox.gob"
+ g_return_val_if_fail (self != NULL, (gboolean )0);
+#line 95 "mn-gmail-mailbox.gob"
+ g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (gboolean )0);
+#line 95 "mn-gmail-mailbox.gob"
+ g_return_val_if_fail (uri_string != NULL, (gboolean )0);
+#line 95 "mn-gmail-mailbox.gob"
+ g_return_val_if_fail (callback != NULL, (gboolean )0);
+#line 317 "mn-gmail-mailbox.c"
+{
+#line 99 "mn-gmail-mailbox.gob"
+
+ SoupMessage *message;
+
+ message = soup_message_new(SOUP_METHOD_GET, uri_string);
+ if (message)
+ {
+ self_get_from_message(self, soup_message_new(SOUP_METHOD_GET, uri_string), callback);
+ return TRUE;
+ }
+ else
+ {
+ mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri_string);
+ return FALSE;
+ }
+ }}
+#line 335 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 115 "mn-gmail-mailbox.gob"
+static void
+mn_gmail_mailbox_get_from_uri (MNGmailMailbox * self, SoupUri * uri, SoupMessageCallbackFn callback)
+#line 341 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_from_uri"
+#line 115 "mn-gmail-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 82 "mn-gmail-mailbox.gob"
+#line 115 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 82 "mn-gmail-mailbox.gob"
+#line 115 "mn-gmail-mailbox.gob"
g_return_if_fail (uri != NULL);
-#line 82 "mn-gmail-mailbox.gob"
+#line 115 "mn-gmail-mailbox.gob"
g_return_if_fail (callback != NULL);
-#line 305 "mn-gmail-mailbox.c"
+#line 352 "mn-gmail-mailbox.c"
{
-#line 86 "mn-gmail-mailbox.gob"
+#line 119 "mn-gmail-mailbox.gob"
- SoupContext *context;
- SoupMessage *message;
- char *cookie;
+ self_get_from_message(self, soup_message_new_from_uri(SOUP_METHOD_GET, uri), callback);
+ }}
+#line 358 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
- context = soup_context_get(uri);
- message = soup_message_new(context, SOUP_METHOD_GET);
- soup_context_unref(context);
+#line 123 "mn-gmail-mailbox.gob"
+static void
+mn_gmail_mailbox_get_from_message (MNGmailMailbox * self, SoupMessage * message, SoupMessageCallbackFn callback)
+#line 364 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_from_message"
+#line 123 "mn-gmail-mailbox.gob"
+ g_return_if_fail (self != NULL);
+#line 123 "mn-gmail-mailbox.gob"
+ g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 123 "mn-gmail-mailbox.gob"
+ g_return_if_fail (message != NULL);
+#line 123 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 123 "mn-gmail-mailbox.gob"
+ g_return_if_fail (callback != NULL);
+#line 377 "mn-gmail-mailbox.c"
+{
+#line 127 "mn-gmail-mailbox.gob"
+
+ char *cookie;
soup_message_add_header(message->request_headers, "User-Agent", "Mail Notification");
+
cookie = self_build_cookie(self);
if (cookie)
{
@@ -322,56 +389,58 @@ mn_gmail_mailbox_get (MNGmailMailbox * self, const char * uri, SoupCallbackFn ca
}
self_dump_request(self, message);
- soup_message_queue(message, callback, self);
- /* message will be freed by libsoup after invoking the callback */
+ soup_session_queue_message(selfp->session, message, callback, self);
+ /* message will be unreffed by libsoup after invoking the callback */
}}
-#line 329 "mn-gmail-mailbox.c"
+#line 396 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_dump_request (MNGmailMailbox * self, SoupMessage * message)
-#line 335 "mn-gmail-mailbox.c"
+#line 402 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_request"
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 108 "mn-gmail-mailbox.gob"
+#line 144 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 344 "mn-gmail-mailbox.c"
+#line 144 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 413 "mn-gmail-mailbox.c"
{
-#line 110 "mn-gmail-mailbox.gob"
+#line 146 "mn-gmail-mailbox.gob"
const SoupUri *suri;
char *uri;
- suri = soup_context_get_uri(message->context);
- uri = soup_uri_to_string(suri, TRUE);
+ suri = soup_message_get_uri(message);
+ uri = soup_uri_to_string(suri, FALSE);
mn_mailbox_notice(MN_MAILBOX(self), "> GET %s", uri);
g_free(uri);
soup_message_foreach_header(message->request_headers, self_dump_request_cb, self);
}}
-#line 358 "mn-gmail-mailbox.c"
+#line 427 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_data)
-#line 364 "mn-gmail-mailbox.c"
+#line 433 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_request_cb"
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
g_return_if_fail (key != NULL);
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
g_return_if_fail (value != NULL);
-#line 122 "mn-gmail-mailbox.gob"
+#line 158 "mn-gmail-mailbox.gob"
g_return_if_fail (user_data != NULL);
-#line 373 "mn-gmail-mailbox.c"
+#line 442 "mn-gmail-mailbox.c"
{
-#line 126 "mn-gmail-mailbox.gob"
+#line 162 "mn-gmail-mailbox.gob"
Self *self = user_data;
const char *header_name = key;
@@ -379,24 +448,26 @@ mn_gmail_mailbox_dump_request_cb (gpointer key, gpointer value, gpointer user_da
mn_mailbox_notice(MN_MAILBOX(self), "> %s: %s", header_name, header_value);
}}
-#line 383 "mn-gmail-mailbox.c"
+#line 452 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message)
-#line 389 "mn-gmail-mailbox.c"
+#line 458 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_response"
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 134 "mn-gmail-mailbox.gob"
+#line 170 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 398 "mn-gmail-mailbox.c"
+#line 170 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 469 "mn-gmail-mailbox.c"
{
-#line 136 "mn-gmail-mailbox.gob"
+#line 172 "mn-gmail-mailbox.gob"
char *body;
char **lines;
@@ -412,24 +483,24 @@ mn_gmail_mailbox_dump_response (MNGmailMailbox * self, SoupMessage * message)
mn_mailbox_notice(MN_MAILBOX(self), "< %s", lines[i]);
g_strfreev(lines);
}}
-#line 416 "mn-gmail-mailbox.c"
+#line 487 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_data)
-#line 422 "mn-gmail-mailbox.c"
+#line 493 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::dump_response_cb"
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
g_return_if_fail (key != NULL);
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
g_return_if_fail (value != NULL);
-#line 152 "mn-gmail-mailbox.gob"
+#line 188 "mn-gmail-mailbox.gob"
g_return_if_fail (user_data != NULL);
-#line 431 "mn-gmail-mailbox.c"
+#line 502 "mn-gmail-mailbox.c"
{
-#line 156 "mn-gmail-mailbox.gob"
+#line 192 "mn-gmail-mailbox.gob"
Self *self = user_data;
const char *header_name = key;
@@ -437,7 +508,7 @@ mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_d
mn_mailbox_notice(MN_MAILBOX(self), "< %s: %s", header_name, header_value);
}}
-#line 441 "mn-gmail-mailbox.c"
+#line 512 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
/**
@@ -453,21 +524,21 @@ mn_gmail_mailbox_dump_response_cb (gpointer key, gpointer value, gpointer user_d
* Return value: a newly allocated string containing the token or
* %NULL if not found.
**/
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
static char *
mn_gmail_mailbox_get_token (const char * str, const char * pre, const char * post, gboolean include_pre, gboolean include_post)
-#line 460 "mn-gmail-mailbox.c"
+#line 531 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_token"
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
g_return_val_if_fail (str != NULL, (char * )0);
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
g_return_val_if_fail (pre != NULL, (char * )0);
-#line 177 "mn-gmail-mailbox.gob"
+#line 213 "mn-gmail-mailbox.gob"
g_return_val_if_fail (post != NULL, (char * )0);
-#line 469 "mn-gmail-mailbox.c"
+#line 540 "mn-gmail-mailbox.c"
{
-#line 183 "mn-gmail-mailbox.gob"
+#line 219 "mn-gmail-mailbox.gob"
char *token = NULL;
char *pre_loc;
@@ -491,26 +562,27 @@ mn_gmail_mailbox_get_token (const char * str, const char * pre, const char * pos
return token;
}}
-#line 495 "mn-gmail-mailbox.c"
+#line 566 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 207 "mn-gmail-mailbox.gob"
+#line 243 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_login (MNGmailMailbox * self)
-#line 501 "mn-gmail-mailbox.c"
+#line 572 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login"
-#line 207 "mn-gmail-mailbox.gob"
+#line 243 "mn-gmail-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 207 "mn-gmail-mailbox.gob"
+#line 243 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 508 "mn-gmail-mailbox.c"
+#line 579 "mn-gmail-mailbox.c"
{
-#line 209 "mn-gmail-mailbox.gob"
+#line 245 "mn-gmail-mailbox.gob"
char *uri;
char *escaped_username;
char *escaped_password;
+ gboolean status;
g_return_if_fail(selfp->logged_in == FALSE);
@@ -520,36 +592,45 @@ mn_gmail_mailbox_login (MNGmailMailbox * self)
mn_mailbox_notice(MN_MAILBOX(self), _("logging in"));
- escaped_username = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->username);
- escaped_password = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->password);
+#define EXTRA_CHARS ";/?:@&=+$,"/* taken from RFC 2396 2.2 */
+ escaped_username = soup_uri_encode(MN_MAILBOX(self)->uri->username, EXTRA_CHARS);
+ escaped_password = soup_uri_encode(MN_MAILBOX(self)->uri->password, EXTRA_CHARS);
uri = g_strdup_printf("https://www.google.com/accounts/ServiceLoginBoxAuth?service=mail&continue=http://gmail.google.com/gmail&Email=%s&Passwd=%s", escaped_username, escaped_password);
g_free(escaped_username);
g_free(escaped_password);
- self_get(self, uri, self_login_cb1);
+ status = self_get(self, uri, self_login_cb1);
g_free(uri);
+
+ if (! status)
+ {
+ mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
+ self_end_check(self);
+ }
}}
-#line 533 "mn-gmail-mailbox.c"
+#line 612 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 232 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_login_cb1 (SoupMessage * message, gpointer user_data)
-#line 539 "mn-gmail-mailbox.c"
+#line 618 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login_cb1"
-#line 232 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 232 "mn-gmail-mailbox.gob"
+#line 276 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 276 "mn-gmail-mailbox.gob"
g_return_if_fail (user_data != NULL);
-#line 546 "mn-gmail-mailbox.c"
+#line 627 "mn-gmail-mailbox.c"
{
-#line 235 "mn-gmail-mailbox.gob"
+#line 279 "mn-gmail-mailbox.gob"
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
char *body;
@@ -559,49 +640,84 @@ mn_gmail_mailbox_login_cb1 (SoupMessage * message, gpointer user_data)
self_update_cookies(self, message);
body = g_strndup(message->response.body, message->response.length);
- next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
+ next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
g_free(body);
if (next_location)
{
+ char *query; /* pointer into next_location */
char *uri;
+ SoupUri *suri;
+ gboolean status;
+
+ /*
+ * The following kludges work around http://bugzilla.ximian.com/show_bug.cgi?id=66516.
+ * FIXME: remove it and bump libsoup version requirement
+ * when the bug is fixed.
+ */
+
+ query = strchr(next_location, '?');
+ if (query)
+ *query = 0;
uri = g_strdup_printf("https://www.google.com/accounts/%s", next_location);
- g_free(next_location);
+ suri = soup_uri_new(uri);
+
+ if (suri)
+ {
+ if (query)
+ {
+ suri->query = g_strdup(query + 1);
+ suri->broken_encoding = TRUE;
+ }
+
+ self_get_from_uri(self, suri, self_login_cb2);
+ soup_uri_free(suri);
+
+ status = TRUE;
+ }
+ else
+ {
+ mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri);
+ status = FALSE;
+ }
- self_get(self, uri, self_login_cb2);
g_free(uri);
-
- return;
+ g_free(next_location);
+
+ if (status)
+ return;
}
mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
}
/* if this point is reached, an error occurred */
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}}
-#line 585 "mn-gmail-mailbox.c"
+#line 699 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 272 "mn-gmail-mailbox.gob"
+#line 349 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_login_cb2 (SoupMessage * message, gpointer user_data)
-#line 591 "mn-gmail-mailbox.c"
+#line 705 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login_cb2"
-#line 272 "mn-gmail-mailbox.gob"
+#line 349 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 272 "mn-gmail-mailbox.gob"
+#line 349 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 349 "mn-gmail-mailbox.gob"
g_return_if_fail (user_data != NULL);
-#line 598 "mn-gmail-mailbox.c"
+#line 714 "mn-gmail-mailbox.c"
{
-#line 275 "mn-gmail-mailbox.gob"
+#line 352 "mn-gmail-mailbox.gob"
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
char *body;
@@ -616,38 +732,44 @@ mn_gmail_mailbox_login_cb2 (SoupMessage * message, gpointer user_data)
if (next_location)
{
- self_get(self, next_location, self_login_cb3);
+ gboolean status;
+
+ status = self_get(self, next_location, self_login_cb3);
g_free(next_location);
- return;
+
+ if (status)
+ return;
}
mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
}
/* if this point is reached, an error occurred */
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}}
-#line 631 "mn-gmail-mailbox.c"
+#line 751 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 306 "mn-gmail-mailbox.gob"
+#line 387 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_login_cb3 (SoupMessage * message, gpointer user_data)
-#line 637 "mn-gmail-mailbox.c"
+#line 757 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::login_cb3"
-#line 306 "mn-gmail-mailbox.gob"
+#line 387 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 306 "mn-gmail-mailbox.gob"
+#line 387 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 387 "mn-gmail-mailbox.gob"
g_return_if_fail (user_data != NULL);
-#line 644 "mn-gmail-mailbox.c"
+#line 766 "mn-gmail-mailbox.c"
{
-#line 309 "mn-gmail-mailbox.gob"
+#line 390 "mn-gmail-mailbox.gob"
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
char *body;
@@ -672,26 +794,28 @@ mn_gmail_mailbox_login_cb3 (SoupMessage * message, gpointer user_data)
}
/* if this point is reached, an error occurred */
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}}
-#line 678 "mn-gmail-mailbox.c"
+#line 800 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message)
-#line 684 "mn-gmail-mailbox.c"
+#line 806 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::update_cookies"
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 341 "mn-gmail-mailbox.gob"
+#line 422 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 693 "mn-gmail-mailbox.c"
+#line 422 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 817 "mn-gmail-mailbox.c"
{
-#line 343 "mn-gmail-mailbox.gob"
+#line 424 "mn-gmail-mailbox.gob"
const GSList *set_cookie_headers;
const GSList *l;
@@ -720,22 +844,22 @@ mn_gmail_mailbox_update_cookies (MNGmailMailbox * self, SoupMessage * message)
}
}
}}
-#line 724 "mn-gmail-mailbox.c"
+#line 848 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 372 "mn-gmail-mailbox.gob"
+#line 453 "mn-gmail-mailbox.gob"
static char *
mn_gmail_mailbox_build_cookie (MNGmailMailbox * self)
-#line 730 "mn-gmail-mailbox.c"
+#line 854 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_cookie"
-#line 372 "mn-gmail-mailbox.gob"
+#line 453 "mn-gmail-mailbox.gob"
g_return_val_if_fail (self != NULL, (char * )0);
-#line 372 "mn-gmail-mailbox.gob"
+#line 453 "mn-gmail-mailbox.gob"
g_return_val_if_fail (MN_IS_GMAIL_MAILBOX (self), (char * )0);
-#line 737 "mn-gmail-mailbox.c"
+#line 861 "mn-gmail-mailbox.c"
{
-#line 374 "mn-gmail-mailbox.gob"
+#line 455 "mn-gmail-mailbox.gob"
GString *cookie;
char *str;
@@ -753,17 +877,17 @@ mn_gmail_mailbox_build_cookie (MNGmailMailbox * self)
return str;
}}
-#line 757 "mn-gmail-mailbox.c"
+#line 881 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 392 "mn-gmail-mailbox.gob"
+#line 473 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_data)
-#line 763 "mn-gmail-mailbox.c"
+#line 887 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::build_cookie_cb"
{
-#line 394 "mn-gmail-mailbox.gob"
+#line 475 "mn-gmail-mailbox.gob"
GString *cookie = user_data;
@@ -772,88 +896,95 @@ mn_gmail_mailbox_build_cookie_cb (gpointer key, gpointer value, gpointer user_da
g_string_append_printf(cookie, "%s=%s", (const char *) key, (const char *) value);
}}
-#line 776 "mn-gmail-mailbox.c"
+#line 900 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 403 "mn-gmail-mailbox.gob"
+#line 484 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_check_internal (MNGmailMailbox * self)
-#line 782 "mn-gmail-mailbox.c"
+#line 906 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::check_internal"
-#line 403 "mn-gmail-mailbox.gob"
+#line 484 "mn-gmail-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 403 "mn-gmail-mailbox.gob"
+#line 484 "mn-gmail-mailbox.gob"
g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
-#line 789 "mn-gmail-mailbox.c"
+#line 913 "mn-gmail-mailbox.c"
{
-#line 405 "mn-gmail-mailbox.gob"
+#line 486 "mn-gmail-mailbox.gob"
mn_mailbox_notice(MN_MAILBOX(self), _("searching for unread mail"));
- self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb);
+ if (! self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb))
+ {
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to search for unread mail"));
+ self_end_check(self);
+ }
}}
-#line 797 "mn-gmail-mailbox.c"
+#line 925 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 411 "mn-gmail-mailbox.gob"
+#line 496 "mn-gmail-mailbox.gob"
static void
mn_gmail_mailbox_check_internal_cb (SoupMessage * message, gpointer user_data)
-#line 803 "mn-gmail-mailbox.c"
+#line 931 "mn-gmail-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::check_internal_cb"
-#line 411 "mn-gmail-mailbox.gob"
+#line 496 "mn-gmail-mailbox.gob"
g_return_if_fail (message != NULL);
-#line 808 "mn-gmail-mailbox.c"
+#line 496 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 938 "mn-gmail-mailbox.c"
{
-#line 414 "mn-gmail-mailbox.gob"
+#line 499 "mn-gmail-mailbox.gob"
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
- int count;
-
self_dump_response(self, message);
+ self_parse_unread(self, message);
+ }
- count = self_get_unread_count(message);
- if (count == -1)
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse Gmail data"));
- else
- mn_mailbox_set_has_new(MN_MAILBOX(self), count != 0);
- }
-
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}}
-#line 831 "mn-gmail-mailbox.c"
+#line 954 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
-#line 435 "mn-gmail-mailbox.gob"
-static int
-mn_gmail_mailbox_get_unread_count (SoupMessage * message)
-#line 837 "mn-gmail-mailbox.c"
+#line 513 "mn-gmail-mailbox.gob"
+static void
+mn_gmail_mailbox_parse_unread (MNGmailMailbox * self, SoupMessage * message)
+#line 960 "mn-gmail-mailbox.c"
{
-#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::get_unread_count"
-#line 435 "mn-gmail-mailbox.gob"
- g_return_val_if_fail (message != NULL, (int )0);
-#line 842 "mn-gmail-mailbox.c"
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_unread"
+#line 513 "mn-gmail-mailbox.gob"
+ g_return_if_fail (self != NULL);
+#line 513 "mn-gmail-mailbox.gob"
+ g_return_if_fail (MN_IS_GMAIL_MAILBOX (self));
+#line 513 "mn-gmail-mailbox.gob"
+ g_return_if_fail (message != NULL);
+#line 513 "mn-gmail-mailbox.gob"
+ g_return_if_fail (SOUP_IS_MESSAGE (message));
+#line 971 "mn-gmail-mailbox.c"
{
-#line 437 "mn-gmail-mailbox.gob"
+#line 515 "mn-gmail-mailbox.gob"
+ MNMailbox *mailbox = MN_MAILBOX(self);
int count = -1;
+ GSList *messages = NULL;
char *body;
char *results;
body = g_strndup(message->response.body, message->response.length);
-
+
results = strstr(body, "Search results for: is:unread\",\"");
if (results)
{
char *count_str;
- count_str = self_get_token(results + 32, "\",", "]", FALSE, FALSE);
+ count_str = self_get_token(results + 32, ",", ",", FALSE, FALSE);
if (count_str)
{
if (mn_str_isnumeric(count_str))
@@ -861,10 +992,148 @@ mn_gmail_mailbox_get_unread_count (SoupMessage * message)
g_free(count_str);
}
}
-
+
+ if (count != -1)
+ {
+ char *p = results + 32;
+
+ while (p && (p = strstr(p, ",1,0")))
+ {
+ char *date;
+ char *sender_email;
+ char *sender_name;
+ char *subject;
+
+ time_t sent_time = 0;
+ char *from = NULL;
+ char *expanded_subject = NULL;
+
+ date = self_get_token(p, "\\<b\\>", "\\</b\\>", FALSE, FALSE);
+ sender_email = self_get_token(p, "<span id=\\'_user_", "\\'", FALSE, FALSE);
+ sender_name = self_get_token(p, "\\'\\>\\<b\\>", "\\</b\\>", FALSE, FALSE);
+ subject = self_get_token(p, ";\",\"\\<b\\>", "\\</b\\>", FALSE, FALSE);
+
+ if (date)
+ {
+ sent_time = self_parse_date(date);
+ g_free(date);
+ }
+
+ if (sender_name && sender_email)
+ {
+ char *tmp;
+
+ tmp = g_strdup_printf("%s <%s>", sender_name, sender_email);
+ from = mn_sgml_ref_expand(tmp);
+ g_free(tmp);
+ }
+ else if (sender_name)
+ from = mn_sgml_ref_expand(sender_name);
+ else if (sender_email)
+ from = mn_sgml_ref_expand(sender_email);
+
+ g_free(sender_email);
+ g_free(sender_name);
+
+ if (subject)
+ {
+ if (strcmp(subject, "(no subject)"))
+ expanded_subject = mn_sgml_ref_expand(subject);
+ g_free(subject);
+ }
+
+ messages = g_slist_append(messages, mn_message_new(mailbox->uri,
+ NULL,
+ sent_time,
+ NULL,
+ from,
+ expanded_subject));
+
+ g_free(from);
+ g_free(expanded_subject);
+
+ p = strstr(p, "[\"^i\"]");
+ }
+ }
+
g_free(body);
-
- return count;
+
+ if (count == -1)
+ mn_mailbox_set_error(mailbox, _("unable to parse Gmail data"));
+ else
+ {
+ mn_mailbox_set_has_new(mailbox, count != 0);
+ mn_mailbox_set_messages(mailbox, messages);
+ }
+
+ mn_g_object_slist_free(messages);
+ }}
+#line 1072 "mn-gmail-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 614 "mn-gmail-mailbox.gob"
+static time_t
+mn_gmail_mailbox_parse_date (const char * date)
+#line 1078 "mn-gmail-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Gmail:Mailbox::parse_date"
+#line 614 "mn-gmail-mailbox.gob"
+ g_return_val_if_fail (date != NULL, (time_t )0);
+#line 1083 "mn-gmail-mailbox.c"
+{
+#line 616 "mn-gmail-mailbox.gob"
+
+ time_t t = 0;
+#ifdef HAVE_TIMEGM
+ time_t now;
+
+ now = mn_time();
+ if (now > 0)
+ {
+ int hours;
+ int minutes;
+ char ampm[3];
+ char month_str[4];
+ int day;
+ struct tm *tm = NULL;
+
+ /* convert now to UTC-7 (Gmail time) */
+ now -= (7 * 3600);
+
+ if (sscanf(date, "%d:%d%2s", &hours, &minutes, ampm) == 3)
+ {
+ tm = gmtime(&now);
+ tm->tm_hour = hours;
+ if (ampm[0] == 'p')
+ tm->tm_hour += 12;
+ tm->tm_min = minutes;
+ tm->tm_sec = 0;
+ }
+ else if (sscanf(date, "%3s %d", month_str, &day) == 2)
+ {
+ const char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+ int i;
+
+ for (i = 0; i < G_N_ELEMENTS(months); i++)
+ if (! strcmp(month_str, months[i]))
+ {
+ tm = gmtime(&now);
+ tm->tm_mon = i;
+ tm->tm_mday = day;
+ tm->tm_hour = 0;
+ tm->tm_min = 0;
+ tm->tm_sec = 0;
+
+ break;
+ }
+ }
+
+ if (tm)
+ t = timegm(tm) + (7 * 3600); /* add 7 hours, because Gmail time is UTC-7 */
+ }
+#endif /* HAVE_TIMEGM */
+
+ return t;
}}
-#line 870 "mn-gmail-mailbox.c"
+#line 1139 "mn-gmail-mailbox.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-gmail-mailbox.gob b/src/mn-gmail-mailbox.gob
@@ -16,24 +16,35 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
+
+%privateheader{
+#include "mn-soup.h"
+%}
+
%{
#include "config.h"
+#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <time.h>
#include <glib/gi18n-lib.h>
-#include <libgnomevfs/gnome-vfs-utils.h>
-#include <libsoup/soup.h>
#include "mn-mailbox-private.h"
#include "mn-util.h"
#include "mn-stock.h"
-#include "mn-soup.h"
+#include "mn-sgml-ref.h"
+
+#define MESSAGE_IS_ERROR(message) \
+ (! SOUP_STATUS_IS_SUCCESSFUL((message)->status_code))
%}
class MN:Gmail:Mailbox from MN:Mailbox
{
+ private SoupSession *session;
private GHashTable *cookies destroywith g_hash_table_destroy;
private gboolean logged_in;
@@ -50,18 +61,12 @@ class MN:Gmail:Mailbox from MN:Mailbox
object = PARENT_HANDLER(type, n_construct_properties, construct_params);
- mn_soup_use();
+ if (! soup_ssl_supported)
+ mn_mailbox_set_init_error(MN_MAILBOX(object), _("libsoup has not been compiled with SSL/TLS support"));
return object;
}
- override (G:Object) void
- finalize (GObject *object)
- {
- mn_soup_unuse();
- PARENT_HANDLER(object);
- }
-
override (MN:Mailbox) gboolean
impl_is (MNMailbox *dummy, MN:URI *uri (check null type))
{
@@ -73,6 +78,7 @@ class MN:Gmail:Mailbox from MN:Mailbox
{
Self *self = SELF(mailbox);
+ selfp->session = mn_soup_session_new();
if (selfp->logged_in)
self_check_internal(self);
else
@@ -80,19 +86,49 @@ class MN:Gmail:Mailbox from MN:Mailbox
}
private void
+ end_check (self)
+ {
+ g_object_unref(selfp->session);
+ mn_mailbox_end_check(MN_MAILBOX(self));
+ }
+
+ private gboolean
get (self,
- const char *uri (check null),
- SoupCallbackFn callback (check null))
+ const char *uri_string (check null),
+ SoupMessageCallbackFn callback (check null))
{
- SoupContext *context;
SoupMessage *message;
- char *cookie;
- context = soup_context_get(uri);
- message = soup_message_new(context, SOUP_METHOD_GET);
- soup_context_unref(context);
+ message = soup_message_new(SOUP_METHOD_GET, uri_string);
+ if (message)
+ {
+ self_get_from_message(self, soup_message_new(SOUP_METHOD_GET, uri_string), callback);
+ return TRUE;
+ }
+ else
+ {
+ mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri_string);
+ return FALSE;
+ }
+ }
+
+ private void
+ get_from_uri (self,
+ SoupUri *uri (check null),
+ SoupMessageCallbackFn callback (check null))
+ {
+ self_get_from_message(self, soup_message_new_from_uri(SOUP_METHOD_GET, uri), callback);
+ }
+
+ private void
+ get_from_message (self,
+ Soup:Message *message (check null type),
+ SoupMessageCallbackFn callback (check null))
+ {
+ char *cookie;
soup_message_add_header(message->request_headers, "User-Agent", "Mail Notification");
+
cookie = self_build_cookie(self);
if (cookie)
{
@@ -101,18 +137,18 @@ class MN:Gmail:Mailbox from MN:Mailbox
}
self_dump_request(self, message);
- soup_message_queue(message, callback, self);
- /* message will be freed by libsoup after invoking the callback */
+ soup_session_queue_message(selfp->session, message, callback, self);
+ /* message will be unreffed by libsoup after invoking the callback */
}
private void
- dump_request (self, SoupMessage *message (check null))
+ dump_request (self, Soup:Message *message (check null type))
{
const SoupUri *suri;
char *uri;
- suri = soup_context_get_uri(message->context);
- uri = soup_uri_to_string(suri, TRUE);
+ suri = soup_message_get_uri(message);
+ uri = soup_uri_to_string(suri, FALSE);
mn_mailbox_notice(MN_MAILBOX(self), "> GET %s", uri);
g_free(uri);
@@ -132,7 +168,7 @@ class MN:Gmail:Mailbox from MN:Mailbox
}
private void
- dump_response (self, SoupMessage *message (check null))
+ dump_response (self, Soup:Message *message (check null type))
{
char *body;
char **lines;
@@ -210,6 +246,7 @@ class MN:Gmail:Mailbox from MN:Mailbox
char *uri;
char *escaped_username;
char *escaped_password;
+ gboolean status;
g_return_if_fail(selfp->logged_in == FALSE);
@@ -219,24 +256,31 @@ class MN:Gmail:Mailbox from MN:Mailbox
mn_mailbox_notice(MN_MAILBOX(self), _("logging in"));
- escaped_username = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->username);
- escaped_password = gnome_vfs_escape_string(MN_MAILBOX(self)->uri->password);
+#define EXTRA_CHARS ";/?:@&=+$,"/* taken from RFC 2396 2.2 */
+ escaped_username = soup_uri_encode(MN_MAILBOX(self)->uri->username, EXTRA_CHARS);
+ escaped_password = soup_uri_encode(MN_MAILBOX(self)->uri->password, EXTRA_CHARS);
uri = g_strdup_printf("https://www.google.com/accounts/ServiceLoginBoxAuth?service=mail&continue=http://gmail.google.com/gmail&Email=%s&Passwd=%s", escaped_username, escaped_password);
g_free(escaped_username);
g_free(escaped_password);
- self_get(self, uri, self_login_cb1);
+ status = self_get(self, uri, self_login_cb1);
g_free(uri);
+
+ if (! status)
+ {
+ mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
+ self_end_check(self);
+ }
}
private void
- login_cb1 (SoupMessage *message (check null),
+ login_cb1 (Soup:Message *message (check null type),
gpointer user_data (check null))
{
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
char *body;
@@ -246,37 +290,70 @@ class MN:Gmail:Mailbox from MN:Mailbox
self_update_cookies(self, message);
body = g_strndup(message->response.body, message->response.length);
- next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
+ next_location = self_get_token(body, "top.location = \"", "\"", FALSE, FALSE);
g_free(body);
if (next_location)
{
+ char *query; /* pointer into next_location */
char *uri;
+ SoupUri *suri;
+ gboolean status;
+
+ /*
+ * The following kludges work around http://bugzilla.ximian.com/show_bug.cgi?id=66516.
+ * FIXME: remove it and bump libsoup version requirement
+ * when the bug is fixed.
+ */
+
+ query = strchr(next_location, '?');
+ if (query)
+ *query = 0;
uri = g_strdup_printf("https://www.google.com/accounts/%s", next_location);
- g_free(next_location);
+ suri = soup_uri_new(uri);
+
+ if (suri)
+ {
+ if (query)
+ {
+ suri->query = g_strdup(query + 1);
+ suri->broken_encoding = TRUE;
+ }
+
+ self_get_from_uri(self, suri, self_login_cb2);
+ soup_uri_free(suri);
+
+ status = TRUE;
+ }
+ else
+ {
+ mn_mailbox_notice(MN_MAILBOX(self), _("unable to parse URI \"%s\""), uri);
+ status = FALSE;
+ }
- self_get(self, uri, self_login_cb2);
g_free(uri);
-
- return;
+ g_free(next_location);
+
+ if (status)
+ return;
}
mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
}
/* if this point is reached, an error occurred */
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}
private void
- login_cb2 (SoupMessage *message (check null),
+ login_cb2 (Soup:Message *message (check null type),
gpointer user_data (check null))
{
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
char *body;
@@ -291,26 +368,30 @@ class MN:Gmail:Mailbox from MN:Mailbox
if (next_location)
{
- self_get(self, next_location, self_login_cb3);
+ gboolean status;
+
+ status = self_get(self, next_location, self_login_cb3);
g_free(next_location);
- return;
+
+ if (status)
+ return;
}
mn_mailbox_set_error(MN_MAILBOX(self), _("login failed"));
}
/* if this point is reached, an error occurred */
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}
private void
- login_cb3 (SoupMessage *message (check null),
+ login_cb3 (Soup:Message *message (check null type),
gpointer user_data (check null))
{
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
char *body;
@@ -335,11 +416,11 @@ class MN:Gmail:Mailbox from MN:Mailbox
}
/* if this point is reached, an error occurred */
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}
private void
- update_cookies (self, SoupMessage *message (check null))
+ update_cookies (self, Soup:Message *message (check null type))
{
const GSList *set_cookie_headers;
const GSList *l;
@@ -405,48 +486,47 @@ class MN:Gmail:Mailbox from MN:Mailbox
{
mn_mailbox_notice(MN_MAILBOX(self), _("searching for unread mail"));
- self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb);
+ if (! self_get(self, "https://gmail.google.com/gmail?search=adv&as_subset=unread&view=tl&start=0", self_check_internal_cb))
+ {
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to search for unread mail"));
+ self_end_check(self);
+ }
}
private void
- check_internal_cb (SoupMessage *message (check null),
+ check_internal_cb (Soup:Message *message (check null type),
gpointer user_data)
{
Self *self = user_data;
- if (SOUP_MESSAGE_IS_ERROR(message))
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->errorphrase);
+ if (MESSAGE_IS_ERROR(message))
+ mn_mailbox_set_error(MN_MAILBOX(self), _("unable to transfer data: %s"), message->reason_phrase);
else
{
- int count;
-
self_dump_response(self, message);
+ self_parse_unread(self, message);
+ }
- count = self_get_unread_count(message);
- if (count == -1)
- mn_mailbox_set_error(MN_MAILBOX(self), _("unable to parse Gmail data"));
- else
- mn_mailbox_set_has_new(MN_MAILBOX(self), count != 0);
- }
-
- mn_mailbox_end_check(MN_MAILBOX(self));
+ self_end_check(self);
}
- private int
- get_unread_count (SoupMessage *message (check null))
+ private void
+ parse_unread (self, Soup:Message *message (check null type))
{
+ MNMailbox *mailbox = MN_MAILBOX(self);
int count = -1;
+ GSList *messages = NULL;
char *body;
char *results;
body = g_strndup(message->response.body, message->response.length);
-
+
results = strstr(body, "Search results for: is:unread\",\"");
if (results)
{
char *count_str;
- count_str = self_get_token(results + 32, "\",", "]", FALSE, FALSE);
+ count_str = self_get_token(results + 32, ",", ",", FALSE, FALSE);
if (count_str)
{
if (mn_str_isnumeric(count_str))
@@ -454,9 +534,136 @@ class MN:Gmail:Mailbox from MN:Mailbox
g_free(count_str);
}
}
-
+
+ if (count != -1)
+ {
+ char *p = results + 32;
+
+ while (p && (p = strstr(p, ",1,0")))
+ {
+ char *date;
+ char *sender_email;
+ char *sender_name;
+ char *subject;
+
+ time_t sent_time = 0;
+ char *from = NULL;
+ char *expanded_subject = NULL;
+
+ date = self_get_token(p, "\\<b\\>", "\\</b\\>", FALSE, FALSE);
+ sender_email = self_get_token(p, "<span id=\\'_user_", "\\'", FALSE, FALSE);
+ sender_name = self_get_token(p, "\\'\\>\\<b\\>", "\\</b\\>", FALSE, FALSE);
+ subject = self_get_token(p, ";\",\"\\<b\\>", "\\</b\\>", FALSE, FALSE);
+
+ if (date)
+ {
+ sent_time = self_parse_date(date);
+ g_free(date);
+ }
+
+ if (sender_name && sender_email)
+ {
+ char *tmp;
+
+ tmp = g_strdup_printf("%s <%s>", sender_name, sender_email);
+ from = mn_sgml_ref_expand(tmp);
+ g_free(tmp);
+ }
+ else if (sender_name)
+ from = mn_sgml_ref_expand(sender_name);
+ else if (sender_email)
+ from = mn_sgml_ref_expand(sender_email);
+
+ g_free(sender_email);
+ g_free(sender_name);
+
+ if (subject)
+ {
+ if (strcmp(subject, "(no subject)"))
+ expanded_subject = mn_sgml_ref_expand(subject);
+ g_free(subject);
+ }
+
+ messages = g_slist_append(messages, mn_message_new(mailbox->uri,
+ NULL,
+ sent_time,
+ NULL,
+ from,
+ expanded_subject));
+
+ g_free(from);
+ g_free(expanded_subject);
+
+ p = strstr(p, "[\"^i\"]");
+ }
+ }
+
g_free(body);
-
- return count;
+
+ if (count == -1)
+ mn_mailbox_set_error(mailbox, _("unable to parse Gmail data"));
+ else
+ {
+ mn_mailbox_set_has_new(mailbox, count != 0);
+ mn_mailbox_set_messages(mailbox, messages);
+ }
+
+ mn_g_object_slist_free(messages);
+ }
+
+ private time_t
+ parse_date (const char *date (check null))
+ {
+ time_t t = 0;
+#ifdef HAVE_TIMEGM
+ time_t now;
+
+ now = mn_time();
+ if (now > 0)
+ {
+ int hours;
+ int minutes;
+ char ampm[3];
+ char month_str[4];
+ int day;
+ struct tm *tm = NULL;
+
+ /* convert now to UTC-7 (Gmail time) */
+ now -= (7 * 3600);
+
+ if (sscanf(date, "%d:%d%2s", &hours, &minutes, ampm) == 3)
+ {
+ tm = gmtime(&now);
+ tm->tm_hour = hours;
+ if (ampm[0] == 'p')
+ tm->tm_hour += 12;
+ tm->tm_min = minutes;
+ tm->tm_sec = 0;
+ }
+ else if (sscanf(date, "%3s %d", month_str, &day) == 2)
+ {
+ const char *months[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
+ int i;
+
+ for (i = 0; i < G_N_ELEMENTS(months); i++)
+ if (! strcmp(month_str, months[i]))
+ {
+ tm = gmtime(&now);
+ tm->tm_mon = i;
+ tm->tm_mday = day;
+ tm->tm_hour = 0;
+ tm->tm_min = 0;
+ tm->tm_sec = 0;
+
+ break;
+ }
+ }
+
+ if (tm)
+ t = timegm(tm) + (7 * 3600); /* add 7 hours, because Gmail time is UTC-7 */
+ }
+#endif /* HAVE_TIMEGM */
+
+ return t;
}
}
diff --git a/src/mn-gmail-mailbox.h b/src/mn-gmail-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-gmime-stream-vfs-private.h b/src/mn-gmime-stream-vfs-private.h
@@ -0,0 +1,26 @@
+/* Generated by GOB (v2.0.10) (do not edit directly) */
+
+#ifndef __MN_GMIME_STREAM_VFS_PRIVATE_H__
+#define __MN_GMIME_STREAM_VFS_PRIVATE_H__
+
+#include "mn-gmime-stream-vfs.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNGMimeStreamVFSPrivate {
+#line 62 "mn-gmime-stream-vfs.gob"
+ GnomeVFSHandle * handle;
+#line 63 "mn-gmime-stream-vfs.gob"
+ char * uri;
+#line 64 "mn-gmime-stream-vfs.gob"
+ gboolean eof;
+#line 20 "mn-gmime-stream-vfs-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-gmime-stream-vfs.c b/src/mn-gmime-stream-vfs.c
@@ -0,0 +1,579 @@
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
+ (do not edit directly) */
+
+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
+
+#define GOB_VERSION_MAJOR 2
+#define GOB_VERSION_MINOR 0
+#define GOB_VERSION_PATCHLEVEL 10
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-gmime-stream-vfs.h"
+
+#include "mn-gmime-stream-vfs-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 26 "mn-gmime-stream-vfs.gob"
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+
+#define VFS_CALL(stream, expr, fail_format, fail_retval) \
+ { \
+ GnomeVFSResult result; \
+ \
+ result = expr; \
+ if (result != GNOME_VFS_OK) \
+ { \
+ (stream)->_priv->eof = TRUE; \
+ if (result != GNOME_VFS_ERROR_EOF) \
+ { \
+ g_warning((fail_format), \
+ (stream)->_priv->uri, \
+ gnome_vfs_result_to_string(result)); \
+ return (fail_retval); \
+ } \
+ } \
+ }
+
+#define VFS_READ(stream, buffer, bytes, bytes_read, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_read((stream)->_priv->handle, (buffer), (bytes), (bytes_read)), _("unable to read %s: %s"), (fail_retval))
+#define VFS_WRITE(stream, buffer, bytes, bytes_written, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_write((stream)->_priv->handle, (buffer), (bytes), (bytes_written)), _("unable to write to %s: %s"), (fail_retval))
+#define VFS_SEEK(stream, whence, offset, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_seek((stream)->_priv->handle, (whence), (offset)), _("unable to seek in %s: %s"), (fail_retval))
+#define VFS_TELL(stream, offset_return, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_tell((stream)->_priv->handle, (offset_return)), _("unable to tell position of %s: %s"), (fail_retval))
+#define VFS_CLOSE(stream, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval))
+
+#line 61 "mn-gmime-stream-vfs.c"
+/* self casting macros */
+#define SELF(x) MN_GMIME_STREAM_VFS(x)
+#define SELF_CONST(x) MN_GMIME_STREAM_VFS_CONST(x)
+#define IS_SELF(x) MN_IS_GMIME_STREAM_VFS(x)
+#define TYPE_SELF MN_TYPE_GMIME_STREAM_VFS
+#define SELF_CLASS(x) MN_GMIME_STREAM_VFS_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_GMIME_STREAM_VFS_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNGMimeStreamVFS Self;
+typedef MNGMimeStreamVFSClass SelfClass;
+
+/* here are local prototypes */
+static void mn_gmime_stream_vfs_init (MNGMimeStreamVFS * o) G_GNUC_UNUSED;
+static void mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c) G_GNUC_UNUSED;
+static ssize_t ___1_mn_gmime_stream_vfs_read (GMimeStream * stream, char * buf, size_t len) G_GNUC_UNUSED;
+static ssize_t ___2_mn_gmime_stream_vfs_write (GMimeStream * stream, const char * buf, size_t len) G_GNUC_UNUSED;
+static int ___3_mn_gmime_stream_vfs_flush (GMimeStream * stream) G_GNUC_UNUSED;
+static int ___4_mn_gmime_stream_vfs_close (GMimeStream * stream) G_GNUC_UNUSED;
+static gboolean ___5_mn_gmime_stream_vfs_eos (GMimeStream * stream) G_GNUC_UNUSED;
+static int ___6_mn_gmime_stream_vfs_reset (GMimeStream * stream) G_GNUC_UNUSED;
+static off_t ___7_mn_gmime_stream_vfs_seek (GMimeStream * stream, off_t offset, GMimeSeekWhence whence) G_GNUC_UNUSED;
+static off_t ___8_mn_gmime_stream_vfs_tell (GMimeStream * stream) G_GNUC_UNUSED;
+static ssize_t ___9_mn_gmime_stream_vfs_length (GMimeStream * stream) G_GNUC_UNUSED;
+static GMimeStream * ___a_mn_gmime_stream_vfs_substream (GMimeStream * stream, off_t start, off_t end) G_GNUC_UNUSED;
+
+/* pointer to the class of our parent */
+static GMimeStreamClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_gmime_stream_vfs_new
+GType
+mn_gmime_stream_vfs_get_type (void)
+{
+ static GType type = 0;
+
+ if ___GOB_UNLIKELY(type == 0) {
+ static const GTypeInfo info = {
+ sizeof (MNGMimeStreamVFSClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mn_gmime_stream_vfs_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL /* class_data */,
+ sizeof (MNGMimeStreamVFS),
+ 0 /* n_preallocs */,
+ (GInstanceInitFunc) mn_gmime_stream_vfs_init,
+ NULL
+ };
+
+ type = g_type_register_static (GMIME_TYPE_STREAM, "MNGMimeStreamVFS", &info, (GTypeFlags)0);
+ }
+
+ return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNGMimeStreamVFS *)g_object_new(mn_gmime_stream_vfs_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNGMimeStreamVFS * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNGMimeStreamVFS *
+GET_NEW_VARG (const char *first, ...)
+{
+ MNGMimeStreamVFS *ret;
+ va_list ap;
+ va_start (ap, first);
+ ret = (MNGMimeStreamVFS *)g_object_new_valist (mn_gmime_stream_vfs_get_type (), first, ap);
+ va_end (ap);
+ return ret;
+}
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::finalize"
+ MNGMimeStreamVFS *self G_GNUC_UNUSED = MN_GMIME_STREAM_VFS (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+ if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+#line 63 "mn-gmime-stream-vfs.gob"
+ if(self->_priv->uri) { g_free ((gpointer) self->_priv->uri); self->_priv->uri = NULL; }
+#line 147 "mn-gmime-stream-vfs.c"
+}
+#undef __GOB_FUNCTION__
+
+static void
+mn_gmime_stream_vfs_init (MNGMimeStreamVFS * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::init"
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNGMimeStreamVFSPrivate);
+}
+#undef __GOB_FUNCTION__
+static void
+mn_gmime_stream_vfs_class_init (MNGMimeStreamVFSClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::class_init"
+ GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+ g_type_class_add_private(c,sizeof(MNGMimeStreamVFSPrivate));
+ GMimeStreamClass *gmime_stream_class = (GMimeStreamClass *)c;
+
+ parent_class = g_type_class_ref (GMIME_TYPE_STREAM);
+
+#line 66 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->read = ___1_mn_gmime_stream_vfs_read;
+#line 88 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->write = ___2_mn_gmime_stream_vfs_write;
+#line 110 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->flush = ___3_mn_gmime_stream_vfs_flush;
+#line 117 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->close = ___4_mn_gmime_stream_vfs_close;
+#line 127 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->eos = ___5_mn_gmime_stream_vfs_eos;
+#line 138 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->reset = ___6_mn_gmime_stream_vfs_reset;
+#line 152 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->seek = ___7_mn_gmime_stream_vfs_seek;
+#line 199 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->tell = ___8_mn_gmime_stream_vfs_tell;
+#line 205 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->length = ___9_mn_gmime_stream_vfs_length;
+#line 224 "mn-gmime-stream-vfs.gob"
+ gmime_stream_class->substream = ___a_mn_gmime_stream_vfs_substream;
+#line 189 "mn-gmime-stream-vfs.c"
+ g_object_class->finalize = ___finalize;
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 66 "mn-gmime-stream-vfs.gob"
+static ssize_t
+___1_mn_gmime_stream_vfs_read (GMimeStream * stream G_GNUC_UNUSED, char * buf, size_t len)
+#line 199 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___buf,___len) \
+ ((GMIME_STREAM_CLASS(parent_class)->read)? \
+ (* GMIME_STREAM_CLASS(parent_class)->read)(___stream,___buf,___len): \
+ ((ssize_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::read"
+#line 66 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (ssize_t )0);
+#line 66 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (ssize_t )0);
+#line 66 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (buf != NULL, (ssize_t )0);
+#line 212 "mn-gmime-stream-vfs.c"
+{
+#line 70 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+ GnomeVFSFileSize bytes_read;
+
+ if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+ return -1;
+ if (stream->bound_end != -1)
+ len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+ /* make sure we are at the right position */
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+ VFS_READ(self, buf, len, &bytes_read, -1);
+ stream->position += bytes_read;
+
+ return bytes_read;
+ }}
+#line 232 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 88 "mn-gmime-stream-vfs.gob"
+static ssize_t
+___2_mn_gmime_stream_vfs_write (GMimeStream * stream G_GNUC_UNUSED, const char * buf, size_t len)
+#line 239 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___buf,___len) \
+ ((GMIME_STREAM_CLASS(parent_class)->write)? \
+ (* GMIME_STREAM_CLASS(parent_class)->write)(___stream,___buf,___len): \
+ ((ssize_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::write"
+#line 88 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (ssize_t )0);
+#line 88 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (ssize_t )0);
+#line 88 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (buf != NULL, (ssize_t )0);
+#line 252 "mn-gmime-stream-vfs.c"
+{
+#line 92 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+ GnomeVFSFileSize bytes_written;
+
+ if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+ return -1;
+ if (stream->bound_end != -1)
+ len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+ /* make sure we are at the right position */
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+ VFS_WRITE(self, buf, len, &bytes_written, -1);
+ stream->position += bytes_written;
+
+ return bytes_written;
+ }}
+#line 272 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 110 "mn-gmime-stream-vfs.gob"
+static int
+___3_mn_gmime_stream_vfs_flush (GMimeStream * stream G_GNUC_UNUSED)
+#line 279 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+ ((GMIME_STREAM_CLASS(parent_class)->flush)? \
+ (* GMIME_STREAM_CLASS(parent_class)->flush)(___stream): \
+ ((int )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::flush"
+#line 110 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (int )0);
+#line 110 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (int )0);
+#line 290 "mn-gmime-stream-vfs.c"
+{
+#line 112 "mn-gmime-stream-vfs.gob"
+
+ /* nop */
+ return 0; /* success */
+ }}
+#line 297 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 117 "mn-gmime-stream-vfs.gob"
+static int
+___4_mn_gmime_stream_vfs_close (GMimeStream * stream G_GNUC_UNUSED)
+#line 304 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+ ((GMIME_STREAM_CLASS(parent_class)->close)? \
+ (* GMIME_STREAM_CLASS(parent_class)->close)(___stream): \
+ ((int )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::close"
+#line 117 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (int )0);
+#line 117 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (int )0);
+#line 315 "mn-gmime-stream-vfs.c"
+{
+#line 119 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+
+ VFS_CLOSE(self, -1);
+
+ return 0; /* success */
+ }}
+#line 325 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 127 "mn-gmime-stream-vfs.gob"
+static gboolean
+___5_mn_gmime_stream_vfs_eos (GMimeStream * stream G_GNUC_UNUSED)
+#line 332 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+ ((GMIME_STREAM_CLASS(parent_class)->eos)? \
+ (* GMIME_STREAM_CLASS(parent_class)->eos)(___stream): \
+ ((gboolean )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::eos"
+#line 127 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (gboolean )0);
+#line 127 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (gboolean )0);
+#line 343 "mn-gmime-stream-vfs.c"
+{
+#line 129 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+
+ if (stream->bound_end == -1)
+ return selfp->eof;
+ else
+ return stream->position >= stream->bound_end;
+ }}
+#line 354 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 138 "mn-gmime-stream-vfs.gob"
+static int
+___6_mn_gmime_stream_vfs_reset (GMimeStream * stream G_GNUC_UNUSED)
+#line 361 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+ ((GMIME_STREAM_CLASS(parent_class)->reset)? \
+ (* GMIME_STREAM_CLASS(parent_class)->reset)(___stream): \
+ ((int )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::reset"
+#line 138 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (int )0);
+#line 138 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (int )0);
+#line 372 "mn-gmime-stream-vfs.c"
+{
+#line 140 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+
+ if (stream->position == stream->bound_start)
+ return 0;
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->bound_start, -1);
+ stream->position = stream->bound_start;
+
+ return 0;
+ }}
+#line 386 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 152 "mn-gmime-stream-vfs.gob"
+static off_t
+___7_mn_gmime_stream_vfs_seek (GMimeStream * stream G_GNUC_UNUSED, off_t offset, GMimeSeekWhence whence)
+#line 393 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___offset,___whence) \
+ ((GMIME_STREAM_CLASS(parent_class)->seek)? \
+ (* GMIME_STREAM_CLASS(parent_class)->seek)(___stream,___offset,___whence): \
+ ((off_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::seek"
+#line 152 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (off_t )0);
+#line 152 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (off_t )0);
+#line 404 "mn-gmime-stream-vfs.c"
+{
+#line 156 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+ off_t real = stream->position;
+
+ switch (whence)
+ {
+ case GMIME_STREAM_SEEK_SET:
+ real = offset;
+ break;
+
+ case GMIME_STREAM_SEEK_CUR:
+ real = stream->position + offset;
+ break;
+
+ case GMIME_STREAM_SEEK_END:
+ if (stream->bound_end == -1)
+ {
+ GnomeVFSFileSize current_position;
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_END, offset, -1);
+ VFS_TELL(self, ¤t_position, -1);
+
+ real = current_position;
+ if (real < stream->bound_start)
+ real = stream->bound_start;
+ stream->position = real;
+
+ return real;
+ }
+ real = stream->bound_end + offset;
+ break;
+ }
+
+ if (stream->bound_end != -1)
+ real = MIN(real, stream->bound_end);
+ real = MAX(real, stream->bound_start);
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, real, -1);
+ stream->position = real;
+
+ return real;
+ }}
+#line 449 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 199 "mn-gmime-stream-vfs.gob"
+static off_t
+___8_mn_gmime_stream_vfs_tell (GMimeStream * stream G_GNUC_UNUSED)
+#line 456 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+ ((GMIME_STREAM_CLASS(parent_class)->tell)? \
+ (* GMIME_STREAM_CLASS(parent_class)->tell)(___stream): \
+ ((off_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::tell"
+#line 199 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (off_t )0);
+#line 199 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (off_t )0);
+#line 467 "mn-gmime-stream-vfs.c"
+{
+#line 201 "mn-gmime-stream-vfs.gob"
+
+ return stream->position;
+ }}
+#line 473 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 205 "mn-gmime-stream-vfs.gob"
+static ssize_t
+___9_mn_gmime_stream_vfs_length (GMimeStream * stream G_GNUC_UNUSED)
+#line 480 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream) \
+ ((GMIME_STREAM_CLASS(parent_class)->length)? \
+ (* GMIME_STREAM_CLASS(parent_class)->length)(___stream): \
+ ((ssize_t )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::length"
+#line 205 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (ssize_t )0);
+#line 205 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (ssize_t )0);
+#line 491 "mn-gmime-stream-vfs.c"
+{
+#line 207 "mn-gmime-stream-vfs.gob"
+
+ Self *self = SELF(stream);
+ GnomeVFSFileSize bound_end;
+
+ if (stream->bound_start != -1 && stream->bound_end != -1)
+ return stream->bound_end - stream->bound_start;
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1);
+ VFS_TELL(self, &bound_end, -1);
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+ if (bound_end < stream->bound_start)
+ return -1;
+
+ return bound_end - stream->bound_start;
+ }}
+#line 510 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 224 "mn-gmime-stream-vfs.gob"
+static GMimeStream *
+___a_mn_gmime_stream_vfs_substream (GMimeStream * stream G_GNUC_UNUSED, off_t start, off_t end)
+#line 517 "mn-gmime-stream-vfs.c"
+#define PARENT_HANDLER(___stream,___start,___end) \
+ ((GMIME_STREAM_CLASS(parent_class)->substream)? \
+ (* GMIME_STREAM_CLASS(parent_class)->substream)(___stream,___start,___end): \
+ ((GMimeStream * )0))
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::substream"
+#line 224 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (stream != NULL, (GMimeStream * )0);
+#line 224 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (GMIME_IS_STREAM (stream), (GMimeStream * )0);
+#line 528 "mn-gmime-stream-vfs.c"
+{
+#line 226 "mn-gmime-stream-vfs.gob"
+
+ Self *self;
+
+ self = GET_NEW;
+ selfp->handle = SELF(stream)->_priv->handle;
+
+ g_mime_stream_construct(GMIME_STREAM(self), start, end);
+
+ return GMIME_STREAM(self);
+ }}
+#line 541 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 237 "mn-gmime-stream-vfs.gob"
+GMimeStream *
+mn_gmime_stream_vfs_new (GnomeVFSHandle * handle, const char * uri)
+#line 548 "mn-gmime-stream-vfs.c"
+{
+#define __GOB_FUNCTION__ "MN:GMime:Stream:VFS::new"
+#line 237 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (handle != NULL, (GMimeStream * )0);
+#line 237 "mn-gmime-stream-vfs.gob"
+ g_return_val_if_fail (uri != NULL, (GMimeStream * )0);
+#line 555 "mn-gmime-stream-vfs.c"
+{
+#line 239 "mn-gmime-stream-vfs.gob"
+
+ Self *self;
+ GMimeStream *stream;
+ GnomeVFSFileSize current_position;
+
+ self = GET_NEW;
+ selfp->handle = handle;
+ selfp->uri = g_strdup(uri);
+
+ if (gnome_vfs_tell(selfp->handle, ¤t_position) != GNOME_VFS_OK)
+ current_position = 0;
+
+ stream = GMIME_STREAM(self);
+ g_mime_stream_construct(stream, current_position, -1);
+
+ /* check for EOF */
+ if (g_mime_stream_length(stream) <= 0)
+ selfp->eof = TRUE;
+
+ return stream;
+ }}
+#line 579 "mn-gmime-stream-vfs.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-gmime-stream-vfs.gob b/src/mn-gmime-stream-vfs.gob
@@ -0,0 +1,260 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+requires 2.0.10
+
+%headertop{
+#include <libgnomevfs/gnome-vfs.h>
+#include <gmime/gmime.h>
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n-lib.h>
+
+#define VFS_CALL(stream, expr, fail_format, fail_retval) \
+ { \
+ GnomeVFSResult result; \
+ \
+ result = expr; \
+ if (result != GNOME_VFS_OK) \
+ { \
+ (stream)->_priv->eof = TRUE; \
+ if (result != GNOME_VFS_ERROR_EOF) \
+ { \
+ g_warning((fail_format), \
+ (stream)->_priv->uri, \
+ gnome_vfs_result_to_string(result)); \
+ return (fail_retval); \
+ } \
+ } \
+ }
+
+#define VFS_READ(stream, buffer, bytes, bytes_read, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_read((stream)->_priv->handle, (buffer), (bytes), (bytes_read)), _("unable to read %s: %s"), (fail_retval))
+#define VFS_WRITE(stream, buffer, bytes, bytes_written, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_write((stream)->_priv->handle, (buffer), (bytes), (bytes_written)), _("unable to write to %s: %s"), (fail_retval))
+#define VFS_SEEK(stream, whence, offset, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_seek((stream)->_priv->handle, (whence), (offset)), _("unable to seek in %s: %s"), (fail_retval))
+#define VFS_TELL(stream, offset_return, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_tell((stream)->_priv->handle, (offset_return)), _("unable to tell position of %s: %s"), (fail_retval))
+#define VFS_CLOSE(stream, fail_retval) \
+ VFS_CALL((stream), gnome_vfs_close((stream)->_priv->handle), _("unable to close %s: %s"), (fail_retval))
+%}
+
+class MN:GMime:Stream:VFS from GMime:Stream
+{
+ private GnomeVFSHandle *handle;
+ private char *uri destroywith g_free; /* used in error messages only */
+ private gboolean eof;
+
+ override (GMime:Stream) ssize_t
+ read (GMime:Stream *stream (check null type),
+ char *buf (check null),
+ size_t len)
+ {
+ Self *self = SELF(stream);
+ GnomeVFSFileSize bytes_read;
+
+ if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+ return -1;
+ if (stream->bound_end != -1)
+ len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+ /* make sure we are at the right position */
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+ VFS_READ(self, buf, len, &bytes_read, -1);
+ stream->position += bytes_read;
+
+ return bytes_read;
+ }
+
+ override (GMime:Stream) ssize_t
+ write (GMime:Stream *stream (check null type),
+ const char *buf (check null),
+ size_t len)
+ {
+ Self *self = SELF(stream);
+ GnomeVFSFileSize bytes_written;
+
+ if (stream->bound_end != -1 && stream->position >= stream->bound_end)
+ return -1;
+ if (stream->bound_end != -1)
+ len = MIN(stream->bound_end - stream->position, (off_t) len);
+
+ /* make sure we are at the right position */
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+ VFS_WRITE(self, buf, len, &bytes_written, -1);
+ stream->position += bytes_written;
+
+ return bytes_written;
+ }
+
+ override (GMime:Stream) int
+ flush (GMime:Stream *stream (check null type))
+ {
+ /* nop */
+ return 0; /* success */
+ }
+
+ override (GMime:Stream) int
+ close (GMime:Stream *stream (check null type))
+ {
+ Self *self = SELF(stream);
+
+ VFS_CLOSE(self, -1);
+
+ return 0; /* success */
+ }
+
+ override (GMime:Stream) gboolean
+ eos (GMime:Stream *stream (check null type))
+ {
+ Self *self = SELF(stream);
+
+ if (stream->bound_end == -1)
+ return selfp->eof;
+ else
+ return stream->position >= stream->bound_end;
+ }
+
+ override (GMime:Stream) int
+ reset (GMime:Stream *stream (check null type))
+ {
+ Self *self = SELF(stream);
+
+ if (stream->position == stream->bound_start)
+ return 0;
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->bound_start, -1);
+ stream->position = stream->bound_start;
+
+ return 0;
+ }
+
+ override (GMime:Stream) off_t
+ seek (GMime:Stream *stream (check null type),
+ off_t offset,
+ GMimeSeekWhence whence)
+ {
+ Self *self = SELF(stream);
+ off_t real = stream->position;
+
+ switch (whence)
+ {
+ case GMIME_STREAM_SEEK_SET:
+ real = offset;
+ break;
+
+ case GMIME_STREAM_SEEK_CUR:
+ real = stream->position + offset;
+ break;
+
+ case GMIME_STREAM_SEEK_END:
+ if (stream->bound_end == -1)
+ {
+ GnomeVFSFileSize current_position;
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_END, offset, -1);
+ VFS_TELL(self, ¤t_position, -1);
+
+ real = current_position;
+ if (real < stream->bound_start)
+ real = stream->bound_start;
+ stream->position = real;
+
+ return real;
+ }
+ real = stream->bound_end + offset;
+ break;
+ }
+
+ if (stream->bound_end != -1)
+ real = MIN(real, stream->bound_end);
+ real = MAX(real, stream->bound_start);
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, real, -1);
+ stream->position = real;
+
+ return real;
+ }
+
+ override (GMime:Stream) off_t
+ tell (GMime:Stream *stream (check null type))
+ {
+ return stream->position;
+ }
+
+ override (GMime:Stream) ssize_t
+ length (GMime:Stream *stream (check null type))
+ {
+ Self *self = SELF(stream);
+ GnomeVFSFileSize bound_end;
+
+ if (stream->bound_start != -1 && stream->bound_end != -1)
+ return stream->bound_end - stream->bound_start;
+
+ VFS_SEEK(self, GNOME_VFS_SEEK_END, 0, -1);
+ VFS_TELL(self, &bound_end, -1);
+ VFS_SEEK(self, GNOME_VFS_SEEK_START, stream->position, -1);
+
+ if (bound_end < stream->bound_start)
+ return -1;
+
+ return bound_end - stream->bound_start;
+ }
+
+ override (GMime:Stream) GMimeStream *
+ substream (GMime:Stream *stream (check null type), off_t start, off_t end)
+ {
+ Self *self;
+
+ self = GET_NEW;
+ selfp->handle = SELF(stream)->_priv->handle;
+
+ g_mime_stream_construct(GMIME_STREAM(self), start, end);
+
+ return GMIME_STREAM(self);
+ }
+
+ public GMimeStream *
+ new (GnomeVFSHandle *handle (check null), const char *uri (check null))
+ {
+ Self *self;
+ GMimeStream *stream;
+ GnomeVFSFileSize current_position;
+
+ self = GET_NEW;
+ selfp->handle = handle;
+ selfp->uri = g_strdup(uri);
+
+ if (gnome_vfs_tell(selfp->handle, ¤t_position) != GNOME_VFS_OK)
+ current_position = 0;
+
+ stream = GMIME_STREAM(self);
+ g_mime_stream_construct(stream, current_position, -1);
+
+ /* check for EOF */
+ if (g_mime_stream_length(stream) <= 0)
+ selfp->eof = TRUE;
+
+ return stream;
+ }
+}
diff --git a/src/mn-gmime-stream-vfs.h b/src/mn-gmime-stream-vfs.h
@@ -0,0 +1,65 @@
+/* Generated by GOB (v2.0.10) (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <libgnomevfs/gnome-vfs.h>
+#include <gmime/gmime.h>
+
+#ifndef __MN_GMIME_STREAM_VFS_H__
+#define __MN_GMIME_STREAM_VFS_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_GMIME_STREAM_VFS (mn_gmime_stream_vfs_get_type())
+#define MN_GMIME_STREAM_VFS(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFS)
+#define MN_GMIME_STREAM_VFS_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFS const)
+#define MN_GMIME_STREAM_VFS_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFSClass)
+#define MN_IS_GMIME_STREAM_VFS(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_gmime_stream_vfs_get_type ())
+
+#define MN_GMIME_STREAM_VFS_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_gmime_stream_vfs_get_type(), MNGMimeStreamVFSClass)
+
+/* Private structure type */
+typedef struct _MNGMimeStreamVFSPrivate MNGMimeStreamVFSPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_GMIME_STREAM_VFS__
+#define __TYPEDEF_MN_GMIME_STREAM_VFS__
+typedef struct _MNGMimeStreamVFS MNGMimeStreamVFS;
+#endif
+struct _MNGMimeStreamVFS {
+ GMimeStream __parent__;
+ /*< private >*/
+ MNGMimeStreamVFSPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNGMimeStreamVFSClass MNGMimeStreamVFSClass;
+struct _MNGMimeStreamVFSClass {
+ GMimeStreamClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType mn_gmime_stream_vfs_get_type (void);
+GMimeStream * mn_gmime_stream_vfs_new (GnomeVFSHandle * handle,
+ const char * uri);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-imap-mailbox-private.h b/src/mn-imap-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_IMAP_MAILBOX_PRIVATE_H__
#define __MN_IMAP_MAILBOX_PRIVATE_H__
diff --git a/src/mn-imap-mailbox-properties-private.h b/src/mn-imap-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
#define __MN_IMAP_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,11 +10,11 @@ extern "C" {
#endif /* __cplusplus */
struct _MNIMAPMailboxPropertiesPrivate {
-#line 66 "mn-imap-mailbox-properties.gob"
+#line 68 "mn-imap-mailbox-properties.gob"
GtkWidget * inbox_radio;
-#line 67 "mn-imap-mailbox-properties.gob"
+#line 69 "mn-imap-mailbox-properties.gob"
GtkWidget * other_radio;
-#line 68 "mn-imap-mailbox-properties.gob"
+#line 70 "mn-imap-mailbox-properties.gob"
GtkWidget * mailbox_entry;
#line 20 "mn-imap-mailbox-properties-private.h"
};
diff --git a/src/mn-imap-mailbox-properties.c b/src/mn-imap-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-imap-mailbox-properties.h"
#include "mn-imap-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-imap-mailbox-properties.gob"
+#line 24 "mn-imap-mailbox-properties.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -31,7 +33,7 @@
#include "mn-auth-combo-box.h"
#include "mn-util.h"
-#line 35 "mn-imap-mailbox-properties.c"
+#line 37 "mn-imap-mailbox-properties.c"
/* self casting macros */
#define SELF(x) MN_IMAP_MAILBOX_PROPERTIES(x)
#define SELF_CONST(x) MN_IMAP_MAILBOX_PROPERTIES_CONST(x)
@@ -71,11 +73,11 @@ static MNPIMailboxPropertiesClass *parent_class = NULL;
static void
___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
{
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
iface->set_uri = self_set_uri;
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
iface->get_uri = self_get_uri;
-#line 79 "mn-imap-mailbox-properties.c"
+#line 81 "mn-imap-mailbox-properties.c"
}
GType
@@ -134,11 +136,10 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::finalize"
- MNIMAPMailboxProperties *self G_GNUC_UNUSED = MN_IMAP_MAILBOX_PROPERTIES (obj_self);
- gpointer priv = self->_priv;
+ MNIMAPMailboxProperties *self G_GNUC_UNUSED = MN_IMAP_MAILBOX_PROPERTIES (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
- g_free (priv);
}
#undef __GOB_FUNCTION__
@@ -146,22 +147,24 @@ static void
mn_imap_mailbox_properties_init (MNIMAPMailboxProperties * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::init"
- o->_priv = g_new0 (MNIMAPMailboxPropertiesPrivate, 1);
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNIMAPMailboxPropertiesPrivate);
}
#undef __GOB_FUNCTION__
-#line 70 "mn-imap-mailbox-properties.gob"
+#line 72 "mn-imap-mailbox-properties.gob"
static void
mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 156 "mn-imap-mailbox-properties.c"
+#line 157 "mn-imap-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+ g_type_class_add_private(class,sizeof(MNIMAPMailboxPropertiesPrivate));
+
parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES);
-#line 79 "mn-imap-mailbox-properties.gob"
+#line 81 "mn-imap-mailbox-properties.gob"
g_object_class->constructor = ___2_mn_imap_mailbox_properties_constructor;
-#line 165 "mn-imap-mailbox-properties.c"
+#line 168 "mn-imap-mailbox-properties.c"
g_object_class->finalize = ___finalize;
g_object_class->get_property = ___object_get_property;
{
@@ -170,7 +173,7 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
"complete");
}
{
-#line 71 "mn-imap-mailbox-properties.gob"
+#line 73 "mn-imap-mailbox-properties.gob"
MNPIMailboxPropertiesClass *pi_class = MN_PI_MAILBOX_PROPERTIES_CLASS(class);
@@ -178,7 +181,7 @@ mn_imap_mailbox_properties_class_init (MNIMAPMailboxPropertiesClass * class G_GN
pi_class->default_port[0] = mn_uri_get_default_port("imap");
pi_class->default_port[1] = mn_uri_get_default_port("imaps");
-#line 182 "mn-imap-mailbox-properties.c"
+#line 185 "mn-imap-mailbox-properties.c"
}
}
#undef __GOB_FUNCTION__
@@ -197,7 +200,7 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_COMPLETE:
{
-#line 36 "mn-imap-mailbox-properties.gob"
+#line 38 "mn-imap-mailbox-properties.gob"
MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
gboolean complete;
@@ -227,7 +230,7 @@ ___object_get_property (GObject *object,
g_value_set_boolean(VAL, complete);
-#line 231 "mn-imap-mailbox-properties.c"
+#line 234 "mn-imap-mailbox-properties.c"
}
break;
default:
@@ -244,10 +247,10 @@ ___object_get_property (GObject *object,
-#line 79 "mn-imap-mailbox-properties.gob"
+#line 81 "mn-imap-mailbox-properties.gob"
static GObject *
___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 251 "mn-imap-mailbox-properties.c"
+#line 254 "mn-imap-mailbox-properties.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -255,7 +258,7 @@ ___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::constructor"
{
-#line 81 "mn-imap-mailbox-properties.gob"
+#line 83 "mn-imap-mailbox-properties.gob"
GObject *object;
Self *self;
@@ -305,57 +308,57 @@ ___2_mn_imap_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
selfp->mailbox_entry, _("The mailbox name"),
NULL);
- g_signal_connect(G_OBJECT(selfp->inbox_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
- g_signal_connect(G_OBJECT(selfp->other_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
- g_signal_connect(G_OBJECT(selfp->mailbox_entry), "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
+ g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
+ g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
+ g_signal_connect(selfp->mailbox_entry, "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
return object;
}}
-#line 315 "mn-imap-mailbox-properties.c"
+#line 318 "mn-imap-mailbox-properties.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
static void
mn_imap_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data)
-#line 322 "mn-imap-mailbox-properties.c"
+#line 325 "mn-imap-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::radio_toggled_h"
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
g_return_if_fail (togglebutton != NULL);
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton));
-#line 137 "mn-imap-mailbox-properties.gob"
+#line 139 "mn-imap-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 331 "mn-imap-mailbox-properties.c"
+#line 334 "mn-imap-mailbox-properties.c"
{
-#line 140 "mn-imap-mailbox-properties.gob"
+#line 142 "mn-imap-mailbox-properties.gob"
Self *self = user_data;
gtk_widget_set_sensitive(selfp->mailbox_entry, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(selfp->other_radio)));
g_object_notify(G_OBJECT(self), "complete");
}}
-#line 340 "mn-imap-mailbox-properties.c"
+#line 343 "mn-imap-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
static gboolean
mn_imap_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * uri)
-#line 346 "mn-imap-mailbox-properties.c"
+#line 349 "mn-imap-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::set_uri"
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
g_return_val_if_fail (properties != NULL, (gboolean )0);
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (gboolean )0);
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 147 "mn-imap-mailbox-properties.gob"
+#line 149 "mn-imap-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 357 "mn-imap-mailbox-properties.c"
+#line 360 "mn-imap-mailbox-properties.c"
{
-#line 150 "mn-imap-mailbox-properties.gob"
+#line 152 "mn-imap-mailbox-properties.gob"
Self *self = SELF(properties);
@@ -383,22 +386,22 @@ mn_imap_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * ur
else
return FALSE;
}}
-#line 387 "mn-imap-mailbox-properties.c"
+#line 390 "mn-imap-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
static MNURI *
mn_imap_mailbox_properties_get_uri (MNMailboxProperties * properties)
-#line 393 "mn-imap-mailbox-properties.c"
+#line 396 "mn-imap-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox:Properties::get_uri"
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
g_return_val_if_fail (properties != NULL, (MNURI * )0);
-#line 178 "mn-imap-mailbox-properties.gob"
+#line 180 "mn-imap-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (MNURI * )0);
-#line 400 "mn-imap-mailbox-properties.c"
+#line 403 "mn-imap-mailbox-properties.c"
{
-#line 180 "mn-imap-mailbox-properties.gob"
+#line 182 "mn-imap-mailbox-properties.gob"
Self *self = SELF(properties);
gboolean ssl;
@@ -429,5 +432,5 @@ mn_imap_mailbox_properties_get_uri (MNMailboxProperties * properties)
return uri;
}}
-#line 433 "mn-imap-mailbox-properties.c"
+#line 436 "mn-imap-mailbox-properties.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-imap-mailbox-properties.gob b/src/mn-imap-mailbox-properties.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-pi-mailbox-properties.h"
%}
@@ -127,9 +129,9 @@ class MN:IMAP:Mailbox:Properties from MN:PI:Mailbox:Properties (interface MN:Mai
selfp->mailbox_entry, _("The mailbox name"),
NULL);
- g_signal_connect(G_OBJECT(selfp->inbox_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
- g_signal_connect(G_OBJECT(selfp->other_radio), "toggled", G_CALLBACK(self_radio_toggled_h), self);
- g_signal_connect(G_OBJECT(selfp->mailbox_entry), "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
+ g_signal_connect(selfp->inbox_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
+ g_signal_connect(selfp->other_radio, "toggled", G_CALLBACK(self_radio_toggled_h), self);
+ g_signal_connect(selfp->mailbox_entry, "changed", G_CALLBACK(mn_pi_mailbox_properties_entry_changed_h), self);
return object;
}
diff --git a/src/mn-imap-mailbox-properties.h b/src/mn-imap-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-imap-mailbox.c b/src/mn-imap-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -21,18 +21,22 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 25 "mn-imap-mailbox.gob"
+#line 27 "mn-imap-mailbox.gob"
#include "config.h"
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
+#include <stdlib.h>
#include <glib/gi18n-lib.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include <eel/eel.h>
#include "mn-mailbox-private.h"
#include "mn-util.h"
#include "mn-client-session.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
#define HAS_CURRENT_TAG(response, priv) (! strcmp((response)->tag, (priv)->tag))
#define IS(response, token) (! strcmp((response)->response, (token)))
@@ -52,7 +56,13 @@
STATE_AUTHENTICATE,
#endif
STATE_LOGIN,
+#ifdef WITH_MIME
+ STATE_EXAMINE,
+ STATE_SEARCH,
+ STATE_FETCH,
+#else /* WITH_MIME */
STATE_STATUS,
+#endif
STATE_LOGOUT
};
@@ -69,10 +79,18 @@
MNIMAPMailbox *self;
MNClientSession *session;
int numeric_tag;
- char *tag;
+ char tag[5];
char **capabilities;
GSList *auth_mechanisms;
+#ifdef WITH_MIME
+ gboolean search_received;
+ GSList *fetch_numbers;
+ char *fetch_set;
+ GSList *received_numbers;
+ GSList *messages;
+#else /* WITH_MIME */
gboolean status_received;
+#endif
#ifdef WITH_SSL
gboolean starttls_completed;
#endif
@@ -90,7 +108,7 @@
char *arguments;
};
-#line 94 "mn-imap-mailbox.c"
+#line 112 "mn-imap-mailbox.c"
/* self casting macros */
#define SELF(x) MN_IMAP_MAILBOX(x)
#define SELF_CONST(x) MN_IMAP_MAILBOX_CONST(x)
@@ -118,11 +136,17 @@ static int mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNC
static int mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void ___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___17_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
static void mn_imap_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static MNClientSessionResponse * mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static void mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
@@ -134,6 +158,7 @@ static gboolean mn_imap_mailbox_session_has_capability (MNClientSessionPrivate *
static int mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_imap_mailbox_session_check_mail (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static char * mn_imap_mailbox_quote (const char * str) G_GNUC_UNUSED;
/* pointer to the class of our parent */
@@ -149,6 +174,12 @@ static MNMailboxClass *parent_class = NULL;
#define self_handle_authenticate_cb mn_imap_mailbox_handle_authenticate_cb
#define self_enter_login_cb mn_imap_mailbox_enter_login_cb
#define self_handle_login_cb mn_imap_mailbox_handle_login_cb
+#define self_enter_examine_cb mn_imap_mailbox_enter_examine_cb
+#define self_handle_examine_cb mn_imap_mailbox_handle_examine_cb
+#define self_enter_search_cb mn_imap_mailbox_enter_search_cb
+#define self_handle_search_cb mn_imap_mailbox_handle_search_cb
+#define self_enter_fetch_cb mn_imap_mailbox_enter_fetch_cb
+#define self_handle_fetch_cb mn_imap_mailbox_handle_fetch_cb
#define self_enter_status_cb mn_imap_mailbox_enter_status_cb
#define self_handle_status_cb mn_imap_mailbox_handle_status_cb
#define self_enter_logout_cb mn_imap_mailbox_enter_logout_cb
@@ -164,6 +195,7 @@ static MNMailboxClass *parent_class = NULL;
#define self_session_after_capability mn_imap_mailbox_session_after_capability
#define self_session_authenticate mn_imap_mailbox_session_authenticate
#define self_session_authenticate_fallback mn_imap_mailbox_session_authenticate_fallback
+#define self_session_check_mail mn_imap_mailbox_session_check_mail
#define self_quote mn_imap_mailbox_quote
GType
mn_imap_mailbox_get_type (void)
@@ -213,10 +245,10 @@ mn_imap_mailbox_init (MNIMAPMailbox * o G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::init"
}
#undef __GOB_FUNCTION__
-#line 96 "mn-imap-mailbox.gob"
+#line 116 "mn-imap-mailbox.gob"
static void
mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
-#line 220 "mn-imap-mailbox.c"
+#line 252 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::class_init"
GObjectClass *g_object_class = (GObjectClass *)class;
@@ -224,29 +256,29 @@ mn_imap_mailbox_class_init (MNIMAPMailboxClass * class G_GNUC_UNUSED)
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 101 "mn-imap-mailbox.gob"
+#line 121 "mn-imap-mailbox.gob"
g_object_class->constructor = ___2_mn_imap_mailbox_constructor;
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
mn_mailbox_class->impl_is = ___3_mn_imap_mailbox_impl_is;
-#line 416 "mn-imap-mailbox.gob"
- mn_mailbox_class->impl_threaded_check = ___11_mn_imap_mailbox_impl_threaded_check;
-#line 234 "mn-imap-mailbox.c"
+#line 677 "mn-imap-mailbox.gob"
+ mn_mailbox_class->impl_threaded_check = ___17_mn_imap_mailbox_impl_threaded_check;
+#line 266 "mn-imap-mailbox.c"
{
-#line 97 "mn-imap-mailbox.gob"
+#line 117 "mn-imap-mailbox.gob"
MN_MAILBOX_CLASS(class)->format = "IMAP";
-#line 240 "mn-imap-mailbox.c"
+#line 272 "mn-imap-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 101 "mn-imap-mailbox.gob"
+#line 121 "mn-imap-mailbox.gob"
static GObject *
___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 250 "mn-imap-mailbox.c"
+#line 282 "mn-imap-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -254,7 +286,7 @@ ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::constructor"
{
-#line 103 "mn-imap-mailbox.gob"
+#line 123 "mn-imap-mailbox.gob"
GObject *object;
MNMailbox *mailbox;
@@ -269,53 +301,55 @@ ___2_mn_imap_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
return object;
}}
-#line 273 "mn-imap-mailbox.c"
+#line 305 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
static gboolean
___3_mn_imap_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 280 "mn-imap-mailbox.c"
+#line 312 "mn-imap-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::impl_is"
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 118 "mn-imap-mailbox.gob"
+#line 138 "mn-imap-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 291 "mn-imap-mailbox.c"
+#line 323 "mn-imap-mailbox.c"
{
-#line 120 "mn-imap-mailbox.gob"
+#line 140 "mn-imap-mailbox.gob"
return MN_URI_IS_IMAP(uri);
}}
-#line 297 "mn-imap-mailbox.c"
+#line 329 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 304 "mn-imap-mailbox.c"
+#line 336 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_greeting_cb"
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 124 "mn-imap-mailbox.gob"
+#line 144 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 313 "mn-imap-mailbox.c"
+#line 345 "mn-imap-mailbox.c"
{
-#line 128 "mn-imap-mailbox.gob"
+#line 148 "mn-imap-mailbox.gob"
priv->session = session;
- if (! response->tag && IS_OK(response))
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (! response->tag && IS_OK(response))
{
if (response->code)
{
@@ -330,28 +364,28 @@ mn_imap_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
: STATE_CAPABILITY;
}
else if (! response->tag && IS(response, "PREAUTH"))
- return STATE_STATUS;
+ return self_session_check_mail(priv);
else if (! response->tag && IS_BYE(response))
return RESULT_ERROR_END;
else
return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}}
-#line 340 "mn-imap-mailbox.c"
+#line 374 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 153 "mn-imap-mailbox.gob"
+#line 175 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 346 "mn-imap-mailbox.c"
+#line 380 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_capability_cb"
-#line 153 "mn-imap-mailbox.gob"
+#line 175 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 153 "mn-imap-mailbox.gob"
+#line 175 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 353 "mn-imap-mailbox.c"
+#line 387 "mn-imap-mailbox.c"
{
-#line 156 "mn-imap-mailbox.gob"
+#line 178 "mn-imap-mailbox.gob"
g_strfreev(priv->capabilities);
priv->capabilities = NULL;
@@ -361,26 +395,28 @@ mn_imap_mailbox_enter_capability_cb (MNClientSession * session, MNClientSessionP
return self_session_write(priv, "CAPABILITY");
}}
-#line 365 "mn-imap-mailbox.c"
+#line 399 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 371 "mn-imap-mailbox.c"
+#line 405 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_capability_cb"
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 166 "mn-imap-mailbox.gob"
+#line 188 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 380 "mn-imap-mailbox.c"
+#line 414 "mn-imap-mailbox.c"
{
-#line 170 "mn-imap-mailbox.gob"
+#line 192 "mn-imap-mailbox.gob"
- if (response->tag)
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
@@ -404,22 +440,22 @@ mn_imap_mailbox_handle_capability_cb (MNClientSession * session, MNClientSession
return RESULT_DEFAULT_HANDLER;
}}
-#line 408 "mn-imap-mailbox.c"
+#line 444 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 196 "mn-imap-mailbox.gob"
+#line 220 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 414 "mn-imap-mailbox.c"
+#line 450 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_starttls_cb"
-#line 196 "mn-imap-mailbox.gob"
+#line 220 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 196 "mn-imap-mailbox.gob"
+#line 220 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 421 "mn-imap-mailbox.c"
+#line 457 "mn-imap-mailbox.c"
{
-#line 199 "mn-imap-mailbox.gob"
+#line 223 "mn-imap-mailbox.gob"
#ifdef WITH_SSL
return self_session_write(priv, "STARTTLS");
@@ -427,27 +463,29 @@ mn_imap_mailbox_enter_starttls_cb (MNClientSession * session, MNClientSessionPri
g_return_val_if_reached(0);
#endif /* WITH_SSL */
}}
-#line 431 "mn-imap-mailbox.c"
+#line 467 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 437 "mn-imap-mailbox.c"
+#line 473 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_starttls_cb"
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 207 "mn-imap-mailbox.gob"
+#line 231 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 446 "mn-imap-mailbox.c"
+#line 482 "mn-imap-mailbox.c"
{
-#line 211 "mn-imap-mailbox.gob"
+#line 235 "mn-imap-mailbox.gob"
#ifdef WITH_SSL
- if (response->tag)
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
@@ -470,22 +508,22 @@ mn_imap_mailbox_handle_starttls_cb (MNClientSession * session, MNClientSessionRe
g_return_val_if_reached(0);
#endif /* WITH_SSL */
}}
-#line 474 "mn-imap-mailbox.c"
+#line 512 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 237 "mn-imap-mailbox.gob"
+#line 263 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 480 "mn-imap-mailbox.c"
+#line 518 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_authenticate_cb"
-#line 237 "mn-imap-mailbox.gob"
+#line 263 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 237 "mn-imap-mailbox.gob"
+#line 263 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 487 "mn-imap-mailbox.c"
+#line 525 "mn-imap-mailbox.c"
{
-#line 240 "mn-imap-mailbox.gob"
+#line 266 "mn-imap-mailbox.gob"
#ifdef WITH_SASL
if (mn_client_session_sasl_authentication_start(priv->session,
@@ -500,24 +538,24 @@ mn_imap_mailbox_enter_authenticate_cb (MNClientSession * session, MNClientSessio
g_return_val_if_reached(0);
#endif /* WITH_SASL */
}}
-#line 504 "mn-imap-mailbox.c"
+#line 542 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 510 "mn-imap-mailbox.c"
+#line 548 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_authenticate_cb"
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 255 "mn-imap-mailbox.gob"
+#line 281 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 519 "mn-imap-mailbox.c"
+#line 557 "mn-imap-mailbox.c"
{
-#line 259 "mn-imap-mailbox.gob"
+#line 285 "mn-imap-mailbox.gob"
#ifdef WITH_SASL
if (response->tag)
@@ -527,7 +565,7 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
if (IS_OK(response))
{
return mn_client_session_sasl_authentication_done(session)
- ? STATE_STATUS
+ ? self_session_check_mail(priv)
: MN_CLIENT_SESSION_RESULT_END;
}
else if (IS_NO(response) || IS_BAD(response))
@@ -544,22 +582,22 @@ mn_imap_mailbox_handle_authenticate_cb (MNClientSession * session, MNClientSessi
g_return_val_if_reached(0);
#endif /* WITH_SASL */
}}
-#line 548 "mn-imap-mailbox.c"
+#line 586 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 286 "mn-imap-mailbox.gob"
+#line 312 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 554 "mn-imap-mailbox.c"
+#line 592 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_login_cb"
-#line 286 "mn-imap-mailbox.gob"
+#line 312 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 286 "mn-imap-mailbox.gob"
+#line 312 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 561 "mn-imap-mailbox.c"
+#line 599 "mn-imap-mailbox.c"
{
-#line 289 "mn-imap-mailbox.gob"
+#line 315 "mn-imap-mailbox.gob"
if (self_session_has_capability(priv, "LOGINDISABLED"))
{
@@ -582,31 +620,33 @@ mn_imap_mailbox_enter_login_cb (MNClientSession * session, MNClientSessionPrivat
return result;
}
}}
-#line 586 "mn-imap-mailbox.c"
+#line 624 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 592 "mn-imap-mailbox.c"
+#line 630 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_login_cb"
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 312 "mn-imap-mailbox.gob"
+#line 338 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 601 "mn-imap-mailbox.c"
+#line 639 "mn-imap-mailbox.c"
{
-#line 316 "mn-imap-mailbox.gob"
+#line 342 "mn-imap-mailbox.gob"
- if (response->tag)
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
if (IS_OK(response))
- return STATE_STATUS;
+ return self_session_check_mail(priv);
else if (IS_NO(response) || IS_BAD(response))
return RESULT_ERROR_LOGOUT;
else
@@ -616,23 +656,320 @@ mn_imap_mailbox_handle_login_cb (MNClientSession * session, MNClientSessionRespo
return RESULT_DEFAULT_HANDLER;
}}
-#line 620 "mn-imap-mailbox.c"
+#line 660 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 361 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_enter_examine_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 666 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_examine_cb"
+#line 361 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 361 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 673 "mn-imap-mailbox.c"
+{
+#line 364 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ char *quoted_mailbox;
+ int result;
+
+ quoted_mailbox = self_quote(priv->mailbox->uri->path);
+ result = self_session_write(priv, "EXAMINE %s", quoted_mailbox);
+ g_free(quoted_mailbox);
+
+ return result;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 690 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 379 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_handle_examine_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 696 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_examine_cb"
+#line 379 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 379 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (response != NULL, (int )0);
+#line 379 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 705 "mn-imap-mailbox.c"
+{
+#line 383 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
+ {
+ if (HAS_CURRENT_TAG(response, priv))
+ {
+ if (IS_OK(response))
+ return STATE_SEARCH;
+ else if (IS_NO(response) || IS_BAD(response))
+ return RESULT_ERROR_LOGOUT;
+ else
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ }
+
+ return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 730 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 406 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_enter_search_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 736 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_search_cb"
+#line 406 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 406 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 743 "mn-imap-mailbox.c"
+{
+#line 409 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ return self_session_write(priv, "SEARCH UNSEEN");
+#else
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 753 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 417 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_handle_search_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 759 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_search_cb"
+#line 417 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 417 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (response != NULL, (int )0);
+#line 417 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 768 "mn-imap-mailbox.c"
+{
+#line 421 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
+ {
+ if (HAS_CURRENT_TAG(response, priv))
+ {
+ if (IS_OK(response))
+ {
+ if (priv->search_received)
+ {
+ if (priv->fetch_set)
+ return STATE_FETCH;
+ else
+ {
+ GDK_THREADS_ENTER();
+ mn_mailbox_set_has_new(priv->mailbox, FALSE);
+ mn_mailbox_set_messages(priv->mailbox, NULL);
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ return STATE_LOGOUT;
+ }
+ }
+ else /* compliance error */
+ return mn_client_session_error(session, _("server did not send search results"));
+ }
+ else if (IS_NO(response) || IS_BAD(response))
+ return RESULT_ERROR_LOGOUT;
+ else
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ }
+ else if (IS(response, "SEARCH"))
+ {
+ if (response->arguments)
+ {
+ char **numbers;
+ GString *string;
+ int i;
+
+ numbers = g_strsplit(response->arguments, " ", 0);
+ string = g_string_new(NULL);
+
+ for (i = 0; numbers[i]; i++)
+ if (mn_str_isnumeric(numbers[i]))
+ {
+ int n = atoi(numbers[i]);
+
+ if (*string->str)
+ g_string_append_c(string, ',');
+ g_string_append(string, numbers[i]);
+
+ priv->fetch_numbers = g_slist_append(priv->fetch_numbers, GINT_TO_POINTER(n));
+ }
+
+ g_strfreev(numbers);
+ priv->fetch_set = g_string_free(string, FALSE);
+ }
+
+ priv->search_received = TRUE;
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+ }
+
+ return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 841 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 492 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_enter_fetch_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 847 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_fetch_cb"
+#line 492 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 492 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 854 "mn-imap-mailbox.c"
+{
+#line 495 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ g_return_val_if_fail(priv->fetch_set != NULL, 0);
+ return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 865 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 333 "mn-imap-mailbox.gob"
+#line 504 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_handle_fetch_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 871 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_fetch_cb"
+#line 504 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 504 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (response != NULL, (int )0);
+#line 504 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 880 "mn-imap-mailbox.c"
+{
+#line 508 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
+ {
+ if (HAS_CURRENT_TAG(response, priv))
+ {
+ if (IS_OK(response))
+ {
+ GSList *l;
+
+ MN_LIST_FOREACH(l, priv->fetch_numbers)
+ if (! g_slist_find(priv->received_numbers, l->data))
+ /* compliance error */
+ return mn_client_session_error(session, _("server did not send all the messages we requested"));
+
+ GDK_THREADS_ENTER();
+ mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+ mn_mailbox_set_messages(priv->mailbox, priv->messages);
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ return STATE_LOGOUT;
+ }
+ else if (IS_NO(response) || IS_BAD(response))
+ return RESULT_ERROR_LOGOUT;
+ else
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ }
+ else if (mn_str_isnumeric(response->response)
+ && response->arguments
+ && ! strncmp(response->arguments, "FETCH ", 6))
+ {
+ int n = atoi(response->response);
+
+ if (g_slist_find(priv->fetch_numbers, GINT_TO_POINTER(n)))
+ {
+ char *p;
+ int len;
+
+ priv->received_numbers = g_slist_append(priv->received_numbers, GINT_TO_POINTER(n));
+
+ /* we assume the header string will be in literal form */
+
+ p = strrchr(response->arguments, '{');
+ if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0)
+ {
+ gconstpointer buf;
+
+ buf = mn_client_session_read(session, len);
+ if (! buf)
+ return MN_CLIENT_SESSION_RESULT_END;
+
+ priv->messages = g_slist_append(priv->messages, mn_message_new_from_buffer(priv->mailbox->uri, buf, len));
+
+ /* read end of line (after literal) */
+ if (! mn_client_session_read_line(session))
+ return MN_CLIENT_SESSION_RESULT_END;
+ }
+ else
+ priv->messages = g_slist_append(priv->messages, mn_message_new_from_error(priv->mailbox->uri, _("unable to fetch message")));
+
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+ }
+ }
+
+ return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 956 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 582 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 626 "mn-imap-mailbox.c"
+#line 962 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_status_cb"
-#line 333 "mn-imap-mailbox.gob"
+#line 582 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 333 "mn-imap-mailbox.gob"
+#line 582 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 633 "mn-imap-mailbox.c"
+#line 969 "mn-imap-mailbox.c"
{
-#line 336 "mn-imap-mailbox.gob"
+#line 585 "mn-imap-mailbox.gob"
+#ifndef WITH_MIME
char *quoted_mailbox;
int result;
@@ -641,27 +978,33 @@ mn_imap_mailbox_enter_status_cb (MNClientSession * session, MNClientSessionPriva
g_free(quoted_mailbox);
return result;
+#else /* ! WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
}}
-#line 646 "mn-imap-mailbox.c"
+#line 986 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 652 "mn-imap-mailbox.c"
+#line 992 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_status_cb"
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 347 "mn-imap-mailbox.gob"
+#line 600 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 661 "mn-imap-mailbox.c"
+#line 1001 "mn-imap-mailbox.c"
{
-#line 351 "mn-imap-mailbox.gob"
+#line 604 "mn-imap-mailbox.gob"
- if (response->tag)
+#ifndef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
@@ -698,46 +1041,51 @@ mn_imap_mailbox_handle_status_cb (MNClientSession * session, MNClientSessionResp
}
return RESULT_DEFAULT_HANDLER;
+#else /* ! WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
}}
-#line 703 "mn-imap-mailbox.c"
+#line 1049 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 391 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_enter_logout_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 709 "mn-imap-mailbox.c"
+#line 1055 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::enter_logout_cb"
-#line 391 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 391 "mn-imap-mailbox.gob"
+#line 650 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 716 "mn-imap-mailbox.c"
+#line 1062 "mn-imap-mailbox.c"
{
-#line 394 "mn-imap-mailbox.gob"
+#line 653 "mn-imap-mailbox.gob"
return self_session_write(priv, "LOGOUT");
}}
-#line 722 "mn-imap-mailbox.c"
+#line 1068 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 728 "mn-imap-mailbox.c"
+#line 1074 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::handle_logout_cb"
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 398 "mn-imap-mailbox.gob"
+#line 657 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 737 "mn-imap-mailbox.c"
+#line 1083 "mn-imap-mailbox.c"
{
-#line 402 "mn-imap-mailbox.gob"
+#line 661 "mn-imap-mailbox.gob"
- if (response->tag && HAS_CURRENT_TAG(response, priv))
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag && HAS_CURRENT_TAG(response, priv))
{
if (IS_OK(response))
return MN_CLIENT_SESSION_RESULT_END;
@@ -749,25 +1097,25 @@ mn_imap_mailbox_handle_logout_cb (MNClientSession * session, MNClientSessionResp
else
return MN_CLIENT_SESSION_RESULT_CONTINUE;
}}
-#line 753 "mn-imap-mailbox.c"
+#line 1101 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 416 "mn-imap-mailbox.gob"
+#line 677 "mn-imap-mailbox.gob"
static void
-___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 759 "mn-imap-mailbox.c"
+___17_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 1107 "mn-imap-mailbox.c"
#define PARENT_HANDLER(___mailbox) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___mailbox); }
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::impl_threaded_check"
-#line 416 "mn-imap-mailbox.gob"
+#line 677 "mn-imap-mailbox.gob"
g_return_if_fail (mailbox != NULL);
-#line 416 "mn-imap-mailbox.gob"
+#line 677 "mn-imap-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 769 "mn-imap-mailbox.c"
+#line 1117 "mn-imap-mailbox.c"
{
-#line 418 "mn-imap-mailbox.gob"
+#line 679 "mn-imap-mailbox.gob"
Self *self = SELF(mailbox);
MNClientSessionState states[] = {
@@ -780,7 +1128,13 @@ ___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
{ STATE_AUTHENTICATE, self_enter_authenticate_cb, self_handle_authenticate_cb },
#endif
{ STATE_LOGIN, self_enter_login_cb, self_handle_login_cb },
+#ifdef WITH_MIME
+ { STATE_EXAMINE, self_enter_examine_cb, self_handle_examine_cb },
+ { STATE_SEARCH, self_enter_search_cb, self_handle_search_cb },
+ { STATE_FETCH, self_enter_fetch_cb, self_handle_fetch_cb },
+#else /* WITH_MIME */
{ STATE_STATUS, self_enter_status_cb, self_handle_status_cb },
+#endif
{ STATE_LOGOUT, self_enter_logout_cb, self_handle_logout_cb },
MN_CLIENT_SESSION_STATES_END
@@ -822,50 +1176,56 @@ ___11_mn_imap_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
- g_free(priv.tag);
g_strfreev(priv.capabilities);
eel_g_slist_free_deep(priv.auth_mechanisms);
+
+#ifdef WITH_MIME
+ g_slist_free(priv.fetch_numbers);
+ g_free(priv.fetch_set);
+ g_slist_free(priv.received_numbers);
+ mn_g_object_slist_free(priv.messages);
+#endif
}}
-#line 830 "mn-imap-mailbox.c"
+#line 1190 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
static void
mn_imap_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv)
-#line 837 "mn-imap-mailbox.c"
+#line 1197 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::notice_cb"
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
g_return_if_fail (session != NULL);
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
g_return_if_fail (str != NULL);
-#line 477 "mn-imap-mailbox.gob"
+#line 750 "mn-imap-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 846 "mn-imap-mailbox.c"
+#line 1206 "mn-imap-mailbox.c"
{
-#line 481 "mn-imap-mailbox.gob"
+#line 754 "mn-imap-mailbox.gob"
mn_mailbox_notice(priv->mailbox, "%s", str);
}}
-#line 852 "mn-imap-mailbox.c"
+#line 1212 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
static MNClientSessionResponse *
mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 858 "mn-imap-mailbox.c"
+#line 1218 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_new_cb"
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (MNClientSessionResponse * )0);
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
g_return_val_if_fail (input != NULL, (MNClientSessionResponse * )0);
-#line 485 "mn-imap-mailbox.gob"
+#line 758 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (MNClientSessionResponse * )0);
-#line 867 "mn-imap-mailbox.c"
+#line 1227 "mn-imap-mailbox.c"
{
-#line 489 "mn-imap-mailbox.gob"
+#line 762 "mn-imap-mailbox.gob"
MNClientSessionResponse *response = NULL;
@@ -912,24 +1272,24 @@ mn_imap_mailbox_response_new_cb (MNClientSession * session, const char * input,
return response;
}}
-#line 916 "mn-imap-mailbox.c"
+#line 1276 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
static void
mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 922 "mn-imap-mailbox.c"
+#line 1282 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::response_free_cb"
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
g_return_if_fail (session != NULL);
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
g_return_if_fail (response != NULL);
-#line 536 "mn-imap-mailbox.gob"
+#line 809 "mn-imap-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 931 "mn-imap-mailbox.c"
+#line 1291 "mn-imap-mailbox.c"
{
-#line 540 "mn-imap-mailbox.gob"
+#line 813 "mn-imap-mailbox.gob"
g_free(response->continuation);
g_free(response->tag);
@@ -938,24 +1298,24 @@ mn_imap_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResp
g_free(response->arguments);
g_free(response);
}}
-#line 942 "mn-imap-mailbox.c"
+#line 1302 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv)
-#line 948 "mn-imap-mailbox.c"
+#line 1308 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::custom_handler_cb"
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 549 "mn-imap-mailbox.gob"
+#line 822 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 957 "mn-imap-mailbox.c"
+#line 1317 "mn-imap-mailbox.c"
{
-#line 554 "mn-imap-mailbox.gob"
+#line 827 "mn-imap-mailbox.gob"
switch (result)
{
@@ -977,44 +1337,44 @@ mn_imap_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionRes
g_return_val_if_reached(0);
}
}}
-#line 981 "mn-imap-mailbox.c"
+#line 1341 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 576 "mn-imap-mailbox.gob"
+#line 849 "mn-imap-mailbox.gob"
static void
mn_imap_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 987 "mn-imap-mailbox.c"
+#line 1347 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_set_error_from_arguments"
-#line 576 "mn-imap-mailbox.gob"
+#line 849 "mn-imap-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 576 "mn-imap-mailbox.gob"
+#line 849 "mn-imap-mailbox.gob"
g_return_if_fail (response != NULL);
-#line 994 "mn-imap-mailbox.c"
+#line 1354 "mn-imap-mailbox.c"
{
-#line 579 "mn-imap-mailbox.gob"
+#line 852 "mn-imap-mailbox.gob"
if (response->arguments)
mn_client_session_error(priv->session, "\"%s\"", response->arguments);
else
mn_client_session_error(priv->session, _("unknown server error"));
}}
-#line 1003 "mn-imap-mailbox.c"
+#line 1363 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 586 "mn-imap-mailbox.gob"
+#line 859 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * format, ...)
-#line 1009 "mn-imap-mailbox.c"
+#line 1369 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_write"
-#line 586 "mn-imap-mailbox.gob"
+#line 859 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 586 "mn-imap-mailbox.gob"
+#line 859 "mn-imap-mailbox.gob"
g_return_val_if_fail (format != NULL, (int )0);
-#line 1016 "mn-imap-mailbox.c"
+#line 1376 "mn-imap-mailbox.c"
{
-#line 590 "mn-imap-mailbox.gob"
+#line 863 "mn-imap-mailbox.gob"
va_list args;
char *command;
@@ -1026,29 +1386,27 @@ mn_imap_mailbox_session_write (MNClientSessionPrivate * priv, const char * forma
if (priv->numeric_tag == 1000)
priv->numeric_tag = 0;
-
- g_free(priv->tag);
- priv->tag = g_strdup_printf("a%03i", priv->numeric_tag++);
+ sprintf(priv->tag, "a%03i", priv->numeric_tag++);
result = mn_client_session_write(priv->session, "%s %s", priv->tag, command);
g_free(command);
return result;
}}
-#line 1039 "mn-imap-mailbox.c"
+#line 1397 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 611 "mn-imap-mailbox.gob"
+#line 882 "mn-imap-mailbox.gob"
static void
mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const char * capabilities)
-#line 1045 "mn-imap-mailbox.c"
+#line 1403 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_parse_capabilities"
-#line 611 "mn-imap-mailbox.gob"
+#line 882 "mn-imap-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 1050 "mn-imap-mailbox.c"
+#line 1408 "mn-imap-mailbox.c"
{
-#line 614 "mn-imap-mailbox.gob"
+#line 885 "mn-imap-mailbox.gob"
if (capabilities)
{
@@ -1063,22 +1421,22 @@ mn_imap_mailbox_session_parse_capabilities (MNClientSessionPrivate * priv, const
else
priv->capabilities = g_new0(char *, 1);
}}
-#line 1067 "mn-imap-mailbox.c"
+#line 1425 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 629 "mn-imap-mailbox.gob"
+#line 900 "mn-imap-mailbox.gob"
static gboolean
mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const char * capability)
-#line 1073 "mn-imap-mailbox.c"
+#line 1431 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_has_capability"
-#line 629 "mn-imap-mailbox.gob"
+#line 900 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (gboolean )0);
-#line 629 "mn-imap-mailbox.gob"
+#line 900 "mn-imap-mailbox.gob"
g_return_val_if_fail (capability != NULL, (gboolean )0);
-#line 1080 "mn-imap-mailbox.c"
+#line 1438 "mn-imap-mailbox.c"
{
-#line 632 "mn-imap-mailbox.gob"
+#line 903 "mn-imap-mailbox.gob"
int i;
@@ -1090,20 +1448,20 @@ mn_imap_mailbox_session_has_capability (MNClientSessionPrivate * priv, const cha
return FALSE;
}}
-#line 1094 "mn-imap-mailbox.c"
+#line 1452 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 644 "mn-imap-mailbox.gob"
+#line 915 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
-#line 1100 "mn-imap-mailbox.c"
+#line 1458 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_after_capability"
-#line 644 "mn-imap-mailbox.gob"
+#line 915 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1105 "mn-imap-mailbox.c"
+#line 1463 "mn-imap-mailbox.c"
{
-#line 646 "mn-imap-mailbox.gob"
+#line 917 "mn-imap-mailbox.gob"
#ifdef WITH_SSL
if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -1122,20 +1480,20 @@ mn_imap_mailbox_session_after_capability (MNClientSessionPrivate * priv)
#endif /* WITH_SSL */
return self_session_authenticate(priv);
}}
-#line 1126 "mn-imap-mailbox.c"
+#line 1484 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 665 "mn-imap-mailbox.gob"
+#line 936 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1132 "mn-imap-mailbox.c"
+#line 1490 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate"
-#line 665 "mn-imap-mailbox.gob"
+#line 936 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1137 "mn-imap-mailbox.c"
+#line 1495 "mn-imap-mailbox.c"
{
-#line 667 "mn-imap-mailbox.gob"
+#line 938 "mn-imap-mailbox.gob"
if (priv->mailbox->uri->authmech)
{
@@ -1164,20 +1522,20 @@ mn_imap_mailbox_session_authenticate (MNClientSessionPrivate * priv)
return STATE_LOGIN;
}
}}
-#line 1168 "mn-imap-mailbox.c"
+#line 1526 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
-#line 696 "mn-imap-mailbox.gob"
+#line 967 "mn-imap-mailbox.gob"
static int
mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
-#line 1174 "mn-imap-mailbox.c"
+#line 1532 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_authenticate_fallback"
-#line 696 "mn-imap-mailbox.gob"
+#line 967 "mn-imap-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1179 "mn-imap-mailbox.c"
+#line 1537 "mn-imap-mailbox.c"
{
-#line 698 "mn-imap-mailbox.gob"
+#line 969 "mn-imap-mailbox.gob"
if (! priv->mailbox->uri->authmech)
{
@@ -1187,7 +1545,28 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
return mn_client_session_error(priv->session, _("authentication failed"));
}}
-#line 1191 "mn-imap-mailbox.c"
+#line 1549 "mn-imap-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 979 "mn-imap-mailbox.gob"
+static int
+mn_imap_mailbox_session_check_mail (MNClientSessionPrivate * priv)
+#line 1555 "mn-imap-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::session_check_mail"
+#line 979 "mn-imap-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 1560 "mn-imap-mailbox.c"
+{
+#line 981 "mn-imap-mailbox.gob"
+
+#ifdef WITH_MIME
+ return STATE_EXAMINE;
+#else
+ return STATE_STATUS;
+#endif
+ }}
+#line 1570 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
/**
@@ -1198,17 +1577,17 @@ mn_imap_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv)
*
* Return value: the quoted string.
**/
-#line 716 "mn-imap-mailbox.gob"
+#line 997 "mn-imap-mailbox.gob"
static char *
mn_imap_mailbox_quote (const char * str)
-#line 1205 "mn-imap-mailbox.c"
+#line 1584 "mn-imap-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:IMAP:Mailbox::quote"
-#line 716 "mn-imap-mailbox.gob"
+#line 997 "mn-imap-mailbox.gob"
g_return_val_if_fail (str != NULL, (char * )0);
-#line 1210 "mn-imap-mailbox.c"
+#line 1589 "mn-imap-mailbox.c"
{
-#line 718 "mn-imap-mailbox.gob"
+#line 999 "mn-imap-mailbox.gob"
GString *quoted;
int i;
@@ -1223,5 +1602,5 @@ mn_imap_mailbox_quote (const char * str)
return g_string_free(quoted, FALSE);
}}
-#line 1227 "mn-imap-mailbox.c"
+#line 1606 "mn-imap-mailbox.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-imap-mailbox.gob b/src/mn-imap-mailbox.gob
@@ -19,6 +19,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -27,12 +29,16 @@
#include <stdio.h>
#include <string.h>
#include <stdarg.h>
+#include <stdlib.h>
#include <glib/gi18n-lib.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include <eel/eel.h>
#include "mn-mailbox-private.h"
#include "mn-util.h"
#include "mn-client-session.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
#define HAS_CURRENT_TAG(response, priv) (! strcmp((response)->tag, (priv)->tag))
#define IS(response, token) (! strcmp((response)->response, (token)))
@@ -52,7 +58,13 @@
STATE_AUTHENTICATE,
#endif
STATE_LOGIN,
+#ifdef WITH_MIME
+ STATE_EXAMINE,
+ STATE_SEARCH,
+ STATE_FETCH,
+#else /* WITH_MIME */
STATE_STATUS,
+#endif
STATE_LOGOUT
};
@@ -69,10 +81,18 @@
MNIMAPMailbox *self;
MNClientSession *session;
int numeric_tag;
- char *tag;
+ char tag[5];
char **capabilities;
GSList *auth_mechanisms;
+#ifdef WITH_MIME
+ gboolean search_received;
+ GSList *fetch_numbers;
+ char *fetch_set;
+ GSList *received_numbers;
+ GSList *messages;
+#else /* WITH_MIME */
gboolean status_received;
+#endif
#ifdef WITH_SSL
gboolean starttls_completed;
#endif
@@ -128,7 +148,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
{
priv->session = session;
- if (! response->tag && IS_OK(response))
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (! response->tag && IS_OK(response))
{
if (response->code)
{
@@ -143,7 +165,7 @@ class MN:IMAP:Mailbox from MN:Mailbox
: STATE_CAPABILITY;
}
else if (! response->tag && IS(response, "PREAUTH"))
- return STATE_STATUS;
+ return self_session_check_mail(priv);
else if (! response->tag && IS_BYE(response))
return RESULT_ERROR_END;
else
@@ -168,7 +190,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
MNClientSessionResponse *response (check null),
MNClientSessionPrivate *priv (check null))
{
- if (response->tag)
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
@@ -210,7 +234,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
MNClientSessionPrivate *priv (check null))
{
#ifdef WITH_SSL
- if (response->tag)
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
@@ -265,7 +291,7 @@ class MN:IMAP:Mailbox from MN:Mailbox
if (IS_OK(response))
{
return mn_client_session_sasl_authentication_done(session)
- ? STATE_STATUS
+ ? self_session_check_mail(priv)
: MN_CLIENT_SESSION_RESULT_END;
}
else if (IS_NO(response) || IS_BAD(response))
@@ -314,12 +340,14 @@ class MN:IMAP:Mailbox from MN:Mailbox
MNClientSessionResponse *response (check null),
MNClientSessionPrivate *priv (check null))
{
- if (response->tag)
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
if (IS_OK(response))
- return STATE_STATUS;
+ return self_session_check_mail(priv);
else if (IS_NO(response) || IS_BAD(response))
return RESULT_ERROR_LOGOUT;
else
@@ -331,9 +359,231 @@ class MN:IMAP:Mailbox from MN:Mailbox
}
private int
+ enter_examine_cb (MNClientSession *session (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ char *quoted_mailbox;
+ int result;
+
+ quoted_mailbox = self_quote(priv->mailbox->uri->path);
+ result = self_session_write(priv, "EXAMINE %s", quoted_mailbox);
+ g_free(quoted_mailbox);
+
+ return result;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ handle_examine_cb (MNClientSession *session (check null),
+ MNClientSessionResponse *response (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
+ {
+ if (HAS_CURRENT_TAG(response, priv))
+ {
+ if (IS_OK(response))
+ return STATE_SEARCH;
+ else if (IS_NO(response) || IS_BAD(response))
+ return RESULT_ERROR_LOGOUT;
+ else
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ }
+
+ return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ enter_search_cb (MNClientSession *session (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ return self_session_write(priv, "SEARCH UNSEEN");
+#else
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ handle_search_cb (MNClientSession *session (check null),
+ MNClientSessionResponse *response (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
+ {
+ if (HAS_CURRENT_TAG(response, priv))
+ {
+ if (IS_OK(response))
+ {
+ if (priv->search_received)
+ {
+ if (priv->fetch_set)
+ return STATE_FETCH;
+ else
+ {
+ GDK_THREADS_ENTER();
+ mn_mailbox_set_has_new(priv->mailbox, FALSE);
+ mn_mailbox_set_messages(priv->mailbox, NULL);
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ return STATE_LOGOUT;
+ }
+ }
+ else /* compliance error */
+ return mn_client_session_error(session, _("server did not send search results"));
+ }
+ else if (IS_NO(response) || IS_BAD(response))
+ return RESULT_ERROR_LOGOUT;
+ else
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ }
+ else if (IS(response, "SEARCH"))
+ {
+ if (response->arguments)
+ {
+ char **numbers;
+ GString *string;
+ int i;
+
+ numbers = g_strsplit(response->arguments, " ", 0);
+ string = g_string_new(NULL);
+
+ for (i = 0; numbers[i]; i++)
+ if (mn_str_isnumeric(numbers[i]))
+ {
+ int n = atoi(numbers[i]);
+
+ if (*string->str)
+ g_string_append_c(string, ',');
+ g_string_append(string, numbers[i]);
+
+ priv->fetch_numbers = g_slist_append(priv->fetch_numbers, GINT_TO_POINTER(n));
+ }
+
+ g_strfreev(numbers);
+ priv->fetch_set = g_string_free(string, FALSE);
+ }
+
+ priv->search_received = TRUE;
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+ }
+
+ return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ enter_fetch_cb (MNClientSession *session (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ g_return_val_if_fail(priv->fetch_set != NULL, 0);
+ return self_session_write(priv, "FETCH %s BODY[HEADER]", priv->fetch_set);
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ handle_fetch_cb (MNClientSession *session (check null),
+ MNClientSessionResponse *response (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
+ {
+ if (HAS_CURRENT_TAG(response, priv))
+ {
+ if (IS_OK(response))
+ {
+ GSList *l;
+
+ MN_LIST_FOREACH(l, priv->fetch_numbers)
+ if (! g_slist_find(priv->received_numbers, l->data))
+ /* compliance error */
+ return mn_client_session_error(session, _("server did not send all the messages we requested"));
+
+ GDK_THREADS_ENTER();
+ mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+ mn_mailbox_set_messages(priv->mailbox, priv->messages);
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ return STATE_LOGOUT;
+ }
+ else if (IS_NO(response) || IS_BAD(response))
+ return RESULT_ERROR_LOGOUT;
+ else
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ }
+ else if (mn_str_isnumeric(response->response)
+ && response->arguments
+ && ! strncmp(response->arguments, "FETCH ", 6))
+ {
+ int n = atoi(response->response);
+
+ if (g_slist_find(priv->fetch_numbers, GINT_TO_POINTER(n)))
+ {
+ char *p;
+ int len;
+
+ priv->received_numbers = g_slist_append(priv->received_numbers, GINT_TO_POINTER(n));
+
+ /* we assume the header string will be in literal form */
+
+ p = strrchr(response->arguments, '{');
+ if (p && sscanf(p, "{%d}", &len) == 1 && len >= 0)
+ {
+ gconstpointer buf;
+
+ buf = mn_client_session_read(session, len);
+ if (! buf)
+ return MN_CLIENT_SESSION_RESULT_END;
+
+ priv->messages = g_slist_append(priv->messages, mn_message_new_from_buffer(priv->mailbox->uri, buf, len));
+
+ /* read end of line (after literal) */
+ if (! mn_client_session_read_line(session))
+ return MN_CLIENT_SESSION_RESULT_END;
+ }
+ else
+ priv->messages = g_slist_append(priv->messages, mn_message_new_from_error(priv->mailbox->uri, _("unable to fetch message")));
+
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+ }
+ }
+
+ return RESULT_DEFAULT_HANDLER;
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
enter_status_cb (MNClientSession *session (check null),
MNClientSessionPrivate *priv (check null))
{
+#ifndef WITH_MIME
char *quoted_mailbox;
int result;
@@ -342,6 +592,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
g_free(quoted_mailbox);
return result;
+#else /* ! WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
}
private int
@@ -349,7 +602,10 @@ class MN:IMAP:Mailbox from MN:Mailbox
MNClientSessionResponse *response (check null),
MNClientSessionPrivate *priv (check null))
{
- if (response->tag)
+#ifndef WITH_MIME
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag)
{
if (HAS_CURRENT_TAG(response, priv))
{
@@ -386,8 +642,11 @@ class MN:IMAP:Mailbox from MN:Mailbox
}
return RESULT_DEFAULT_HANDLER;
+#else /* ! WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
}
-
+
private int
enter_logout_cb (MNClientSession *session (check null),
MNClientSessionPrivate *priv (check null))
@@ -400,7 +659,9 @@ class MN:IMAP:Mailbox from MN:Mailbox
MNClientSessionResponse *response (check null),
MNClientSessionPrivate *priv (check null))
{
- if (response->tag && HAS_CURRENT_TAG(response, priv))
+ if (response->continuation)
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ else if (response->tag && HAS_CURRENT_TAG(response, priv))
{
if (IS_OK(response))
return MN_CLIENT_SESSION_RESULT_END;
@@ -427,7 +688,13 @@ class MN:IMAP:Mailbox from MN:Mailbox
{ STATE_AUTHENTICATE, self_enter_authenticate_cb, self_handle_authenticate_cb },
#endif
{ STATE_LOGIN, self_enter_login_cb, self_handle_login_cb },
+#ifdef WITH_MIME
+ { STATE_EXAMINE, self_enter_examine_cb, self_handle_examine_cb },
+ { STATE_SEARCH, self_enter_search_cb, self_handle_search_cb },
+ { STATE_FETCH, self_enter_fetch_cb, self_handle_fetch_cb },
+#else /* WITH_MIME */
{ STATE_STATUS, self_enter_status_cb, self_handle_status_cb },
+#endif
{ STATE_LOGOUT, self_enter_logout_cb, self_handle_logout_cb },
MN_CLIENT_SESSION_STATES_END
@@ -469,9 +736,15 @@ class MN:IMAP:Mailbox from MN:Mailbox
gdk_flush();
GDK_THREADS_LEAVE();
- g_free(priv.tag);
g_strfreev(priv.capabilities);
eel_g_slist_free_deep(priv.auth_mechanisms);
+
+#ifdef WITH_MIME
+ g_slist_free(priv.fetch_numbers);
+ g_free(priv.fetch_set);
+ g_slist_free(priv.received_numbers);
+ mn_g_object_slist_free(priv.messages);
+#endif
}
private void
@@ -598,9 +871,7 @@ class MN:IMAP:Mailbox from MN:Mailbox
if (priv->numeric_tag == 1000)
priv->numeric_tag = 0;
-
- g_free(priv->tag);
- priv->tag = g_strdup_printf("a%03i", priv->numeric_tag++);
+ sprintf(priv->tag, "a%03i", priv->numeric_tag++);
result = mn_client_session_write(priv->session, "%s %s", priv->tag, command);
g_free(command);
@@ -705,6 +976,16 @@ class MN:IMAP:Mailbox from MN:Mailbox
return mn_client_session_error(priv->session, _("authentication failed"));
}
+ private int
+ session_check_mail (MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ return STATE_EXAMINE;
+#else
+ return STATE_STATUS;
+#endif
+ }
+
/**
* quote:
* @str: the string to quote
diff --git a/src/mn-imap-mailbox.h b/src/mn-imap-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-mail-icon-private.h b/src/mn-mail-icon-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MAIL_ICON_PRIVATE_H__
#define __MN_MAIL_ICON_PRIVATE_H__
@@ -10,11 +10,9 @@ extern "C" {
#endif /* __cplusplus */
struct _MNMailIconPrivate {
-#line 37 "mn-mail-icon.gob"
+#line 39 "mn-mail-icon.gob"
GtkWidget * menu;
-#line 38 "mn-mail-icon.gob"
- GtkWidget * run_item;
-#line 18 "mn-mail-icon-private.h"
+#line 16 "mn-mail-icon-private.h"
};
#ifdef __cplusplus
diff --git a/src/mn-mail-icon.c b/src/mn-mail-icon.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -23,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 24 "mn-mail-icon.gob"
+#line 26 "mn-mail-icon.gob"
#include "config.h"
#include <gdk/gdkkeysyms.h>
@@ -47,7 +47,7 @@ typedef MNMailIconClass SelfClass;
/* here are local prototypes */
static void mn_mail_icon_activate (MNMailIcon * self) G_GNUC_UNUSED;
-static void mn_mail_icon_activate_run (MNMailIcon * self) G_GNUC_UNUSED;
+static void mn_mail_icon_activate_summary (MNMailIcon * self) G_GNUC_UNUSED;
static void mn_mail_icon_activate_update (MNMailIcon * self) G_GNUC_UNUSED;
static void mn_mail_icon_activate_properties (MNMailIcon * self) G_GNUC_UNUSED;
static void mn_mail_icon_activate_help (MNMailIcon * self) G_GNUC_UNUSED;
@@ -65,9 +65,9 @@ static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_dat
#define self_connect__activate(object,func,data) mn_mail_icon_connect__activate((object),(func),(data))
#define self_connect_after__activate(object,func,data) mn_mail_icon_connect_after__activate((object),(func),(data))
#define self_connect_data__activate(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate((object),(func),(data),(destroy_data),(flags))
-#define self_connect__activate_run(object,func,data) mn_mail_icon_connect__activate_run((object),(func),(data))
-#define self_connect_after__activate_run(object,func,data) mn_mail_icon_connect_after__activate_run((object),(func),(data))
-#define self_connect_data__activate_run(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_run((object),(func),(data),(destroy_data),(flags))
+#define self_connect__activate_summary(object,func,data) mn_mail_icon_connect__activate_summary((object),(func),(data))
+#define self_connect_after__activate_summary(object,func,data) mn_mail_icon_connect_after__activate_summary((object),(func),(data))
+#define self_connect_data__activate_summary(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_summary((object),(func),(data),(destroy_data),(flags))
#define self_connect__activate_update(object,func,data) mn_mail_icon_connect__activate_update((object),(func),(data))
#define self_connect_after__activate_update(object,func,data) mn_mail_icon_connect_after__activate_update((object),(func),(data))
#define self_connect_data__activate_update(object,func,data,destroy_data,flags) mn_mail_icon_connect_data__activate_update((object),(func),(data),(destroy_data),(flags))
@@ -86,7 +86,7 @@ static gboolean mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_dat
enum {
ACTIVATE_SIGNAL,
- ACTIVATE_RUN_SIGNAL,
+ ACTIVATE_SUMMARY_SIGNAL,
ACTIVATE_UPDATE_SIGNAL,
ACTIVATE_PROPERTIES_SIGNAL,
ACTIVATE_HELP_SIGNAL,
@@ -102,7 +102,7 @@ static EggTrayIconClass *parent_class = NULL;
/* Short form macros */
#define self_activate mn_mail_icon_activate
-#define self_activate_run mn_mail_icon_activate_run
+#define self_activate_summary mn_mail_icon_activate_summary
#define self_activate_update mn_mail_icon_activate_update
#define self_activate_properties mn_mail_icon_activate_properties
#define self_activate_help mn_mail_icon_activate_help
@@ -112,7 +112,6 @@ static EggTrayIconClass *parent_class = NULL;
#define self_button_release_event_h mn_mail_icon_button_release_event_h
#define self_popup_menu_h mn_mail_icon_popup_menu_h
#define self_new mn_mail_icon_new
-#define self_set_command mn_mail_icon_set_command
GType
mn_mail_icon_get_type (void)
{
@@ -163,9 +162,9 @@ ___dispose (GObject *obj_self)
MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 34 "mn-mail-icon.gob"
- if(self->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->tooltips); self->tooltips = NULL; }
-#line 169 "mn-mail-icon.c"
+#line 36 "mn-mail-icon.gob"
+ if(self->tooltips) { g_object_unref ((gpointer) self->tooltips); self->tooltips = NULL; }
+#line 168 "mn-mail-icon.c"
}
#undef __GOB_FUNCTION__
@@ -174,25 +173,26 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::finalize"
- MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (obj_self);
- gpointer priv = self->_priv;
+ MNMailIcon *self G_GNUC_UNUSED = MN_MAIL_ICON (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 37 "mn-mail-icon.gob"
- if(self->_priv->menu) { ((*(void (*)(void *))gtk_widget_destroy)) (self->_priv->menu); self->_priv->menu = NULL; }
-#line 184 "mn-mail-icon.c"
- g_free (priv);
+#line 39 "mn-mail-icon.gob"
+ if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
+#line 183 "mn-mail-icon.c"
}
#undef __GOB_FUNCTION__
-#line 56 "mn-mail-icon.gob"
+#line 57 "mn-mail-icon.gob"
static void
mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
-#line 192 "mn-mail-icon.c"
+#line 190 "mn-mail-icon.c"
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+ g_type_class_add_private(class,sizeof(MNMailIconPrivate));
+
parent_class = g_type_class_ref (EGG_TYPE_TRAY_ICON);
object_signals[ACTIVATE_SIGNAL] =
@@ -203,11 +203,11 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- object_signals[ACTIVATE_RUN_SIGNAL] =
- g_signal_new ("activate_run",
+ object_signals[ACTIVATE_SUMMARY_SIGNAL] =
+ g_signal_new ("activate_summary",
G_TYPE_FROM_CLASS (g_object_class),
(GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
- G_STRUCT_OFFSET (MNMailIconClass, activate_run),
+ G_STRUCT_OFFSET (MNMailIconClass, activate_summary),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
@@ -253,7 +253,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
G_TYPE_NONE, 0);
class->activate = NULL;
- class->activate_run = NULL;
+ class->activate_summary = NULL;
class->activate_update = NULL;
class->activate_properties = NULL;
class->activate_help = NULL;
@@ -262,7 +262,7 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
g_object_class->dispose = ___dispose;
g_object_class->finalize = ___finalize;
{
-#line 57 "mn-mail-icon.gob"
+#line 58 "mn-mail-icon.gob"
GtkBindingSet *binding_set;
@@ -280,33 +280,35 @@ mn_mail_icon_class_init (MNMailIconClass * class G_GNUC_UNUSED)
}
}
#undef __GOB_FUNCTION__
-#line 71 "mn-mail-icon.gob"
+#line 72 "mn-mail-icon.gob"
static void
mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
#line 287 "mn-mail-icon.c"
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::init"
- self->_priv = g_new0 (MNMailIconPrivate, 1);
-#line 34 "mn-mail-icon.gob"
+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailIconPrivate);
+#line 36 "mn-mail-icon.gob"
self->tooltips = mn_tooltips_new();
#line 293 "mn-mail-icon.c"
-#line 35 "mn-mail-icon.gob"
+#line 37 "mn-mail-icon.gob"
self->image = mn_blinking_image_new_from_stock(MN_STOCK_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR);
#line 296 "mn-mail-icon.c"
-#line 37 "mn-mail-icon.gob"
+#line 39 "mn-mail-icon.gob"
self->_priv->menu = gtk_menu_new();
#line 299 "mn-mail-icon.c"
{
-#line 72 "mn-mail-icon.gob"
+#line 73 "mn-mail-icon.gob"
GtkMenuShell *shell;
GtkWidget *event_box;
+ GtkWidget *summary_item;
GtkWidget *properties_item;
GtkWidget *help_item;
GtkWidget *about_item;
GtkWidget *remove_item;
shell = GTK_MENU_SHELL(selfp->menu);
+ summary_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_SUMMARY, NULL);
self->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update"));
mn_menu_shell_append(shell, NULL, NULL);
properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
@@ -315,11 +317,12 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
mn_menu_shell_append(shell, NULL, NULL);
remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
- g_signal_connect_swapped(G_OBJECT(self->update_item), "activate", G_CALLBACK(self_activate_update), self);
- g_signal_connect_swapped(G_OBJECT(properties_item), "activate", G_CALLBACK(self_activate_properties), self);
- g_signal_connect_swapped(G_OBJECT(help_item), "activate", G_CALLBACK(self_activate_help), self);
- g_signal_connect_swapped(G_OBJECT(about_item), "activate", G_CALLBACK(self_activate_about), self);
- g_signal_connect_swapped(G_OBJECT(remove_item), "activate", G_CALLBACK(self_activate_remove), self);
+ g_signal_connect_swapped(summary_item, "activate", G_CALLBACK(self_activate_summary), self);
+ g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self);
+ g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+ g_signal_connect_swapped(help_item, "activate", G_CALLBACK(self_activate_help), self);
+ g_signal_connect_swapped(about_item, "activate", G_CALLBACK(self_activate_about), self);
+ g_signal_connect_swapped(remove_item, "activate", G_CALLBACK(self_activate_remove), self);
event_box = gtk_event_box_new();
GTK_WIDGET_SET_FLAGS(event_box, GTK_CAN_FOCUS);
@@ -328,25 +331,24 @@ mn_mail_icon_init (MNMailIcon * self G_GNUC_UNUSED)
gtk_container_add(GTK_CONTAINER(event_box), self->image);
gtk_container_add(GTK_CONTAINER(self), event_box);
- g_signal_connect(G_OBJECT(event_box), "button-press-event",
- G_CALLBACK(self_button_press_event_h), self);
- g_signal_connect(G_OBJECT(event_box), "button-release-event",
- G_CALLBACK(self_button_release_event_h), self);
- g_signal_connect(G_OBJECT(event_box), "popup-menu",
- G_CALLBACK(self_popup_menu_h), self);
+ g_object_connect(event_box,
+ "signal::button-press-event", self_button_press_event_h, self,
+ "signal::button-release-event", self_button_release_event_h, self,
+ "signal::popup-menu", self_popup_menu_h, self,
+ NULL);
gtk_widget_show(self->image);
gtk_widget_show(event_box);
-#line 342 "mn-mail-icon.c"
+#line 344 "mn-mail-icon.c"
}
}
#undef __GOB_FUNCTION__
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
static void
mn_mail_icon_activate (MNMailIcon * self)
-#line 350 "mn-mail-icon.c"
+#line 352 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -354,11 +356,11 @@ mn_mail_icon_activate (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 41 "mn-mail-icon.gob"
+#line 42 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 362 "mn-mail-icon.c"
+#line 364 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -372,10 +374,10 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 43 "mn-mail-icon.gob"
+#line 44 "mn-mail-icon.gob"
static void
-mn_mail_icon_activate_run (MNMailIcon * self)
-#line 379 "mn-mail-icon.c"
+mn_mail_icon_activate_summary (MNMailIcon * self)
+#line 381 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -383,28 +385,28 @@ mn_mail_icon_activate_run (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 43 "mn-mail-icon.gob"
+#line 44 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 43 "mn-mail-icon.gob"
+#line 44 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 391 "mn-mail-icon.c"
+#line 393 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
g_value_set_instance (&___param_values[0], (gpointer) self);
g_signal_emitv (___param_values,
- object_signals[ACTIVATE_RUN_SIGNAL],
+ object_signals[ACTIVATE_SUMMARY_SIGNAL],
0 /* detail */,
&___return_val);
g_value_unset (&___param_values[0]);
}
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
static void
mn_mail_icon_activate_update (MNMailIcon * self)
-#line 408 "mn-mail-icon.c"
+#line 410 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -412,11 +414,11 @@ mn_mail_icon_activate_update (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 45 "mn-mail-icon.gob"
+#line 46 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 420 "mn-mail-icon.c"
+#line 422 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -430,10 +432,10 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 47 "mn-mail-icon.gob"
+#line 48 "mn-mail-icon.gob"
static void
mn_mail_icon_activate_properties (MNMailIcon * self)
-#line 437 "mn-mail-icon.c"
+#line 439 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -441,11 +443,11 @@ mn_mail_icon_activate_properties (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 47 "mn-mail-icon.gob"
+#line 48 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 47 "mn-mail-icon.gob"
+#line 48 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 449 "mn-mail-icon.c"
+#line 451 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -459,10 +461,10 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 49 "mn-mail-icon.gob"
+#line 50 "mn-mail-icon.gob"
static void
mn_mail_icon_activate_help (MNMailIcon * self)
-#line 466 "mn-mail-icon.c"
+#line 468 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -470,11 +472,11 @@ mn_mail_icon_activate_help (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 49 "mn-mail-icon.gob"
+#line 50 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 49 "mn-mail-icon.gob"
+#line 50 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 478 "mn-mail-icon.c"
+#line 480 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -488,10 +490,10 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 51 "mn-mail-icon.gob"
+#line 52 "mn-mail-icon.gob"
static void
mn_mail_icon_activate_about (MNMailIcon * self)
-#line 495 "mn-mail-icon.c"
+#line 497 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -499,11 +501,11 @@ mn_mail_icon_activate_about (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 51 "mn-mail-icon.gob"
+#line 52 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 51 "mn-mail-icon.gob"
+#line 52 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 507 "mn-mail-icon.c"
+#line 509 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -517,10 +519,10 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 53 "mn-mail-icon.gob"
+#line 54 "mn-mail-icon.gob"
static void
mn_mail_icon_activate_remove (MNMailIcon * self)
-#line 524 "mn-mail-icon.c"
+#line 526 "mn-mail-icon.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -528,11 +530,11 @@ mn_mail_icon_activate_remove (MNMailIcon * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 53 "mn-mail-icon.gob"
+#line 54 "mn-mail-icon.gob"
g_return_if_fail (self != NULL);
-#line 53 "mn-mail-icon.gob"
+#line 54 "mn-mail-icon.gob"
g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 536 "mn-mail-icon.c"
+#line 538 "mn-mail-icon.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -548,23 +550,23 @@ memset (&___param_values, 0, sizeof (___param_values));
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
static gboolean
mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 555 "mn-mail-icon.c"
+#line 557 "mn-mail-icon.c"
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::button_press_event_h"
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 113 "mn-mail-icon.gob"
+#line 116 "mn-mail-icon.gob"
g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 566 "mn-mail-icon.c"
+#line 568 "mn-mail-icon.c"
{
-#line 117 "mn-mail-icon.gob"
+#line 120 "mn-mail-icon.gob"
Self *self = user_data;
@@ -578,26 +580,26 @@ mn_mail_icon_button_press_event_h (GtkWidget * widget, GdkEventButton * event, g
return FALSE; /* propagate event */
}}
-#line 582 "mn-mail-icon.c"
+#line 584 "mn-mail-icon.c"
#undef __GOB_FUNCTION__
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
static gboolean
mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 588 "mn-mail-icon.c"
+#line 590 "mn-mail-icon.c"
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::button_release_event_h"
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 131 "mn-mail-icon.gob"
+#line 134 "mn-mail-icon.gob"
g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 599 "mn-mail-icon.c"
+#line 601 "mn-mail-icon.c"
{
-#line 135 "mn-mail-icon.gob"
+#line 138 "mn-mail-icon.gob"
Self *self = user_data;
@@ -609,75 +611,43 @@ mn_mail_icon_button_release_event_h (GtkWidget * widget, GdkEventButton * event,
return FALSE; /* propagate event */
}}
-#line 613 "mn-mail-icon.c"
+#line 615 "mn-mail-icon.c"
#undef __GOB_FUNCTION__
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
static gboolean
mn_mail_icon_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 619 "mn-mail-icon.c"
+#line 621 "mn-mail-icon.c"
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::popup_menu_h"
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 147 "mn-mail-icon.gob"
+#line 150 "mn-mail-icon.gob"
g_return_val_if_fail (user_data != NULL, (gboolean )0);
-#line 628 "mn-mail-icon.c"
+#line 630 "mn-mail-icon.c"
{
-#line 150 "mn-mail-icon.gob"
+#line 153 "mn-mail-icon.gob"
Self *self = user_data;
gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
return TRUE; /* a menu was activated */
}}
-#line 637 "mn-mail-icon.c"
+#line 639 "mn-mail-icon.c"
#undef __GOB_FUNCTION__
-#line 157 "mn-mail-icon.gob"
+#line 160 "mn-mail-icon.gob"
GtkWidget *
mn_mail_icon_new (void)
-#line 643 "mn-mail-icon.c"
+#line 645 "mn-mail-icon.c"
{
#define __GOB_FUNCTION__ "MN:Mail:Icon::new"
{
-#line 159 "mn-mail-icon.gob"
+#line 162 "mn-mail-icon.gob"
- return g_object_new(TYPE_SELF, "title", _("Mail Notification"), NULL);
- }}
-#line 651 "mn-mail-icon.c"
-#undef __GOB_FUNCTION__
-
-#line 163 "mn-mail-icon.gob"
-void
-mn_mail_icon_set_command (MNMailIcon * self, const char * command)
-#line 657 "mn-mail-icon.c"
-{
-#define __GOB_FUNCTION__ "MN:Mail:Icon::set_command"
-#line 163 "mn-mail-icon.gob"
- g_return_if_fail (self != NULL);
-#line 163 "mn-mail-icon.gob"
- g_return_if_fail (MN_IS_MAIL_ICON (self));
-#line 664 "mn-mail-icon.c"
-{
-#line 165 "mn-mail-icon.gob"
-
- char *mnemonic;
-
- if (selfp->run_item)
- gtk_widget_destroy(selfp->run_item);
-
- mnemonic = command
- ? g_strdup_printf(_("_Run %s"), command)
- : g_strdup(_("_Run Default Action"));
-
- selfp->run_item = mn_menu_shell_prepend(GTK_MENU_SHELL(selfp->menu), GTK_STOCK_EXECUTE, mnemonic);
- g_free(mnemonic);
-
- gtk_widget_set_sensitive(selfp->run_item, command != NULL);
- g_signal_connect_swapped(G_OBJECT(selfp->run_item), "activate", G_CALLBACK(self_activate_run), self);
+ return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
}}
-#line 683 "mn-mail-icon.c"
+#line 653 "mn-mail-icon.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-mail-icon.gob b/src/mn-mail-icon.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
#include "eggtrayicon.h"
@@ -35,13 +37,12 @@ class MN:Mail:Icon from Egg:Tray:Icon
public GtkWidget *image = {mn_blinking_image_new_from_stock(MN_STOCK_MAIL, GTK_ICON_SIZE_LARGE_TOOLBAR)};
private GtkWidget *menu = {gtk_menu_new()} destroywith gtk_widget_destroy;
- private GtkWidget *run_item;
public GtkWidget *update_item;
signal (ACTION) private NONE (NONE)
void activate (self);
signal (ACTION) private NONE (NONE)
- void activate_run (self);
+ void activate_summary (self);
signal (ACTION) private NONE (NONE)
void activate_update (self);
signal (ACTION) private NONE (NONE)
@@ -72,12 +73,14 @@ class MN:Mail:Icon from Egg:Tray:Icon
{
GtkMenuShell *shell;
GtkWidget *event_box;
+ GtkWidget *summary_item;
GtkWidget *properties_item;
GtkWidget *help_item;
GtkWidget *about_item;
GtkWidget *remove_item;
shell = GTK_MENU_SHELL(selfp->menu);
+ summary_item = mn_menu_shell_append(shell, MN_STOCK_MAIL_SUMMARY, NULL);
self->update_item = mn_menu_shell_append(shell, GTK_STOCK_REFRESH, _("_Update"));
mn_menu_shell_append(shell, NULL, NULL);
properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
@@ -86,11 +89,12 @@ class MN:Mail:Icon from Egg:Tray:Icon
mn_menu_shell_append(shell, NULL, NULL);
remove_item = mn_menu_shell_append(shell, GTK_STOCK_REMOVE, _("R_emove From Notification Area"));
- g_signal_connect_swapped(G_OBJECT(self->update_item), "activate", G_CALLBACK(self_activate_update), self);
- g_signal_connect_swapped(G_OBJECT(properties_item), "activate", G_CALLBACK(self_activate_properties), self);
- g_signal_connect_swapped(G_OBJECT(help_item), "activate", G_CALLBACK(self_activate_help), self);
- g_signal_connect_swapped(G_OBJECT(about_item), "activate", G_CALLBACK(self_activate_about), self);
- g_signal_connect_swapped(G_OBJECT(remove_item), "activate", G_CALLBACK(self_activate_remove), self);
+ g_signal_connect_swapped(summary_item, "activate", G_CALLBACK(self_activate_summary), self);
+ g_signal_connect_swapped(self->update_item, "activate", G_CALLBACK(self_activate_update), self);
+ g_signal_connect_swapped(properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+ g_signal_connect_swapped(help_item, "activate", G_CALLBACK(self_activate_help), self);
+ g_signal_connect_swapped(about_item, "activate", G_CALLBACK(self_activate_about), self);
+ g_signal_connect_swapped(remove_item, "activate", G_CALLBACK(self_activate_remove), self);
event_box = gtk_event_box_new();
GTK_WIDGET_SET_FLAGS(event_box, GTK_CAN_FOCUS);
@@ -99,12 +103,11 @@ class MN:Mail:Icon from Egg:Tray:Icon
gtk_container_add(GTK_CONTAINER(event_box), self->image);
gtk_container_add(GTK_CONTAINER(self), event_box);
- g_signal_connect(G_OBJECT(event_box), "button-press-event",
- G_CALLBACK(self_button_press_event_h), self);
- g_signal_connect(G_OBJECT(event_box), "button-release-event",
- G_CALLBACK(self_button_release_event_h), self);
- g_signal_connect(G_OBJECT(event_box), "popup-menu",
- G_CALLBACK(self_popup_menu_h), self);
+ g_object_connect(event_box,
+ "signal::button-press-event", self_button_press_event_h, self,
+ "signal::button-release-event", self_button_release_event_h, self,
+ "signal::popup-menu", self_popup_menu_h, self,
+ NULL);
gtk_widget_show(self->image);
gtk_widget_show(event_box);
@@ -157,25 +160,6 @@ class MN:Mail:Icon from Egg:Tray:Icon
public GtkWidget *
new (void)
{
- return g_object_new(TYPE_SELF, "title", _("Mail Notification"), NULL);
- }
-
- public void
- set_command (self, const char *command)
- {
- char *mnemonic;
-
- if (selfp->run_item)
- gtk_widget_destroy(selfp->run_item);
-
- mnemonic = command
- ? g_strdup_printf(_("_Run %s"), command)
- : g_strdup(_("_Run Default Action"));
-
- selfp->run_item = mn_menu_shell_prepend(GTK_MENU_SHELL(selfp->menu), GTK_STOCK_EXECUTE, mnemonic);
- g_free(mnemonic);
-
- gtk_widget_set_sensitive(selfp->run_item, command != NULL);
- g_signal_connect_swapped(G_OBJECT(selfp->run_item), "activate", G_CALLBACK(self_activate_run), self);
+ return GTK_WIDGET(GET_NEW_VARG("title", _("Mail Notification"), NULL));
}
}
diff --git a/src/mn-mail-icon.h b/src/mn-mail-icon.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
@@ -54,7 +54,7 @@ typedef struct _MNMailIconClass MNMailIconClass;
struct _MNMailIconClass {
EggTrayIconClass __parent__;
/*signal*/void (* activate) (MNMailIcon * self);
- /*signal*/void (* activate_run) (MNMailIcon * self);
+ /*signal*/void (* activate_summary) (MNMailIcon * self);
/*signal*/void (* activate_update) (MNMailIcon * self);
/*signal*/void (* activate_properties) (MNMailIcon * self);
/*signal*/void (* activate_help) (MNMailIcon * self);
@@ -68,8 +68,6 @@ struct _MNMailIconClass {
*/
GType mn_mail_icon_get_type (void);
GtkWidget * mn_mail_icon_new (void);
-void mn_mail_icon_set_command (MNMailIcon * self,
- const char * command);
/*
* Signal connection wrapper macros
@@ -78,9 +76,9 @@ void mn_mail_icon_set_command (MNMailIcon * self,
#define mn_mail_icon_connect__activate(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data))
#define mn_mail_icon_connect_after__activate(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data))
#define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate",(GCallback) __extension__ ({void (* ___activate) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate; }), (data), (destroy_data), (GConnectFlags)(flags))
-#define mn_mail_icon_connect__activate_run(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_run",(GCallback) __extension__ ({void (* ___activate_run) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_run; }), (data))
-#define mn_mail_icon_connect_after__activate_run(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_run",(GCallback) __extension__ ({void (* ___activate_run) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_run; }), (data))
-#define mn_mail_icon_connect_data__activate_run(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_run",(GCallback) __extension__ ({void (* ___activate_run) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_run; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mail_icon_connect__activate_summary(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_summary",(GCallback) __extension__ ({void (* ___activate_summary) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_summary; }), (data))
+#define mn_mail_icon_connect_after__activate_summary(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_summary",(GCallback) __extension__ ({void (* ___activate_summary) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_summary; }), (data))
+#define mn_mail_icon_connect_data__activate_summary(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_summary",(GCallback) __extension__ ({void (* ___activate_summary) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_summary; }), (data), (destroy_data), (GConnectFlags)(flags))
#define mn_mail_icon_connect__activate_update(object,func,data) g_signal_connect(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data))
#define mn_mail_icon_connect_after__activate_update(object,func,data) g_signal_connect_after(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data))
#define mn_mail_icon_connect_data__activate_update(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(__extension__ ({MNMailIcon *___object = (object); ___object; })),"activate_update",(GCallback) __extension__ ({void (* ___activate_update) (MNMailIcon * ___fake___self, gpointer ___data ) = (func); ___activate_update; }), (data), (destroy_data), (GConnectFlags)(flags))
@@ -100,9 +98,9 @@ void mn_mail_icon_set_command (MNMailIcon * self,
#define mn_mail_icon_connect__activate(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data))
#define mn_mail_icon_connect_after__activate(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data))
#define mn_mail_icon_connect_data__activate(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
-#define mn_mail_icon_connect__activate_run(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_run",(GCallback)(func),(data))
-#define mn_mail_icon_connect_after__activate_run(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_run",(GCallback)(func),(data))
-#define mn_mail_icon_connect_data__activate_run(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_run",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mail_icon_connect__activate_summary(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_summary",(GCallback)(func),(data))
+#define mn_mail_icon_connect_after__activate_summary(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_summary",(GCallback)(func),(data))
+#define mn_mail_icon_connect_data__activate_summary(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_summary",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
#define mn_mail_icon_connect__activate_update(object,func,data) g_signal_connect(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data))
#define mn_mail_icon_connect_after__activate_update(object,func,data) g_signal_connect_after(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data))
#define mn_mail_icon_connect_data__activate_update(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAIL_ICON(object),"activate_update",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
diff --git a/src/mn-mailbox-private.h b/src/mn-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MAILBOX_PRIVATE_H__
#define __MN_MAILBOX_PRIVATE_H__
@@ -10,7 +10,7 @@ extern "C" {
#endif /* __cplusplus */
-#line 24 "mn-mailbox.gob"
+#line 28 "mn-mailbox.gob"
#include <libgnomevfs/gnome-vfs.h>
@@ -26,25 +26,27 @@ extern "C" {
#line 28 "mn-mailbox-private.h"
struct _MNMailboxPrivate {
-#line 132 "mn-mailbox.gob"
+#line 143 "mn-mailbox.gob"
char * name;
-#line 136 "mn-mailbox.gob"
+#line 147 "mn-mailbox.gob"
gboolean automatic;
-#line 141 "mn-mailbox.gob"
+#line 152 "mn-mailbox.gob"
gboolean has_new;
-#line 146 "mn-mailbox.gob"
+#line 157 "mn-mailbox.gob"
+ GSList * messages;
+#line 211 "mn-mailbox.gob"
char * error;
-#line 166 "mn-mailbox.gob"
+#line 231 "mn-mailbox.gob"
GnomeVFSMonitorHandle * monitor_handle;
-#line 167 "mn-mailbox.gob"
+#line 232 "mn-mailbox.gob"
char * monitor_uri;
-#line 168 "mn-mailbox.gob"
+#line 233 "mn-mailbox.gob"
MNMailboxMonitorEventType monitor_events;
-#line 170 "mn-mailbox.gob"
+#line 235 "mn-mailbox.gob"
gboolean checking;
-#line 310 "mn-mailbox.gob"
+#line 365 "mn-mailbox.gob"
char * init_error;
-#line 48 "mn-mailbox-private.h"
+#line 50 "mn-mailbox-private.h"
};
void mn_mailbox_set_error (MNMailbox * self, const char * format, ...);
void mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...);
diff --git a/src/mn-mailbox-properties-dialog.c b/src/mn-mailbox-properties-dialog.c
@@ -204,7 +204,7 @@ mn_mailbox_properties_dialog_add_type (MNMailboxPropertiesDialog *dialog,
g_free(label);
gtk_widget_show(GTK_WIDGET(properties));
- g_signal_connect_swapped(G_OBJECT(properties), "notify::complete", G_CALLBACK(mn_mailbox_properties_dialog_update_sensitivity), dialog);
+ g_signal_connect_swapped(properties, "notify::complete", G_CALLBACK(mn_mailbox_properties_dialog_update_sensitivity), dialog);
g_object_unref(properties); /* now it belongs to the store */
}
@@ -231,9 +231,6 @@ mn_mailbox_properties_dialog_select_properties (MNMailboxPropertiesDialog *dialo
gtk_container_add(GTK_CONTAINER(private->properties_event_box), GTK_WIDGET(properties));
size_group = mn_mailbox_properties_get_size_group(properties);
gtk_size_group_add_widget(size_group, private->mailbox_type_label);
-
- /* force the dialog to recalculate its size */
- gtk_window_resize(GTK_WINDOW(dialog), 1, 1);
}
static void
diff --git a/src/mn-mailbox-properties-util.c b/src/mn-mailbox-properties-util.c
@@ -106,7 +106,7 @@ mn_mailbox_properties_link_entries (GtkEntry *first, ...)
if (next)
g_return_if_fail(GTK_IS_ENTRY(next));
- g_signal_connect(G_OBJECT(entry),
+ g_signal_connect(entry,
"activate",
G_CALLBACK(mn_mailbox_properties_entry_activate_h),
next ? next : first);
diff --git a/src/mn-mailbox-view-private.h b/src/mn-mailbox-view-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MAILBOX_VIEW_PRIVATE_H__
#define __MN_MAILBOX_VIEW_PRIVATE_H__
@@ -10,17 +10,17 @@ extern "C" {
#endif /* __cplusplus */
struct _MNMailboxViewPrivate {
-#line 49 "mn-mailbox-view.gob"
+#line 51 "mn-mailbox-view.gob"
GtkWidget * menu;
-#line 50 "mn-mailbox-view.gob"
+#line 52 "mn-mailbox-view.gob"
GtkWidget * remove_item;
-#line 51 "mn-mailbox-view.gob"
+#line 53 "mn-mailbox-view.gob"
GtkWidget * cut_item;
-#line 52 "mn-mailbox-view.gob"
+#line 54 "mn-mailbox-view.gob"
GtkWidget * copy_item;
-#line 53 "mn-mailbox-view.gob"
+#line 55 "mn-mailbox-view.gob"
GtkWidget * paste_item;
-#line 54 "mn-mailbox-view.gob"
+#line 56 "mn-mailbox-view.gob"
GtkWidget * properties_item;
#line 26 "mn-mailbox-view-private.h"
};
diff --git a/src/mn-mailbox-view.c b/src/mn-mailbox-view.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -23,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-mailbox-view.gob"
+#line 24 "mn-mailbox-view.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -73,10 +73,12 @@ static void ___real_mn_mailbox_view_activate_properties (MNMailboxView * self);
static void mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
static void mn_mailbox_view_class_init (MNMailboxViewClass * class) G_GNUC_UNUSED;
static void mn_mailbox_view_init (MNMailboxView * self) G_GNUC_UNUSED;
-static void ___b_mn_mailbox_view_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_mailbox_view_update (MNMailboxView * self) G_GNUC_UNUSED;
+static void mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
+static void mn_mailbox_view_mailbox_changed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
+static void mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
static void mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox) G_GNUC_UNUSED;
-static gboolean mn_mailbox_view_has_mailbox (MNMailboxView * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static gboolean mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter) G_GNUC_UNUSED;
static void mn_mailbox_view_update_sensitivity (MNMailboxView * self) G_GNUC_UNUSED;
static void mn_mailbox_view_remove_mailbox (MNMailboxView * self) G_GNUC_UNUSED;
static void mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data) G_GNUC_UNUSED;
@@ -139,9 +141,12 @@ static GtkTreeViewClass *parent_class = NULL;
#define self_activate_paste_receive_cb mn_mailbox_view_activate_paste_receive_cb
#define self_activate_properties mn_mailbox_view_activate_properties
#define self_activate_properties_cb mn_mailbox_view_activate_properties_cb
-#define self_update mn_mailbox_view_update
+#define self_append mn_mailbox_view_append
+#define self_mailbox_added_h mn_mailbox_view_mailbox_added_h
+#define self_mailbox_changed_h mn_mailbox_view_mailbox_changed_h
+#define self_mailbox_removed_h mn_mailbox_view_mailbox_removed_h
#define self_update_iter mn_mailbox_view_update_iter
-#define self_has_mailbox mn_mailbox_view_has_mailbox
+#define self_find_mailbox mn_mailbox_view_find_mailbox
#define self_update_sensitivity mn_mailbox_view_update_sensitivity
#define self_remove_mailbox mn_mailbox_view_remove_mailbox
#define self_remove_mailbox_cb mn_mailbox_view_remove_mailbox_cb
@@ -205,26 +210,26 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::finalize"
- MNMailboxView *self G_GNUC_UNUSED = MN_MAILBOX_VIEW (obj_self);
- gpointer priv = self->_priv;
-#line 293 "mn-mailbox-view.gob"
- ___b_mn_mailbox_view_finalize(obj_self);
-#line 213 "mn-mailbox-view.c"
-#line 49 "mn-mailbox-view.gob"
- if(self->_priv->menu) { ((*(void (*)(void *))gtk_widget_destroy)) (self->_priv->menu); self->_priv->menu = NULL; }
-#line 216 "mn-mailbox-view.c"
- g_free (priv);
+ MNMailboxView *self G_GNUC_UNUSED = MN_MAILBOX_VIEW (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+ if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+#line 51 "mn-mailbox-view.gob"
+ if(self->_priv->menu) { gtk_widget_destroy ((gpointer) self->_priv->menu); self->_priv->menu = NULL; }
+#line 220 "mn-mailbox-view.c"
}
#undef __GOB_FUNCTION__
-#line 185 "mn-mailbox-view.gob"
+#line 187 "mn-mailbox-view.gob"
static void
mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
-#line 224 "mn-mailbox-view.c"
+#line 227 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+ g_type_class_add_private(class,sizeof(MNMailboxViewPrivate));
+
parent_class = g_type_class_ref (GTK_TYPE_TREE_VIEW);
object_signals[ACTIVATE_ADD_SIGNAL] =
@@ -276,23 +281,22 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
class->activate_add = ___real_mn_mailbox_view_activate_add;
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
class->activate_remove = ___real_mn_mailbox_view_activate_remove;
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
class->activate_cut = ___real_mn_mailbox_view_activate_cut;
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
class->activate_copy = ___real_mn_mailbox_view_activate_copy;
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
class->activate_paste = ___real_mn_mailbox_view_activate_paste;
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
class->activate_properties = ___real_mn_mailbox_view_activate_properties;
-#line 293 "mn-mailbox-view.gob"
+#line 297 "mn-mailbox-view.c"
g_object_class->finalize = ___finalize;
-#line 294 "mn-mailbox-view.c"
{
-#line 186 "mn-mailbox-view.gob"
+#line 188 "mn-mailbox-view.gob"
GtkBindingSet *binding_set;
@@ -320,22 +324,22 @@ mn_mailbox_view_class_init (MNMailboxViewClass * class G_GNUC_UNUSED)
gtk_binding_entry_add_signal(binding_set, GDK_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0);
gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0);
-#line 324 "mn-mailbox-view.c"
+#line 328 "mn-mailbox-view.c"
}
}
#undef __GOB_FUNCTION__
-#line 214 "mn-mailbox-view.gob"
+#line 216 "mn-mailbox-view.gob"
static void
mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
-#line 331 "mn-mailbox-view.c"
+#line 335 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::init"
- self->_priv = g_new0 (MNMailboxViewPrivate, 1);
-#line 49 "mn-mailbox-view.gob"
+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailboxViewPrivate);
+#line 51 "mn-mailbox-view.gob"
self->_priv->menu = gtk_menu_new();
-#line 337 "mn-mailbox-view.c"
+#line 341 "mn-mailbox-view.c"
{
-#line 215 "mn-mailbox-view.gob"
+#line 217 "mn-mailbox-view.gob"
GtkMenuShell *shell;
GtkWidget *add_item;
@@ -344,6 +348,9 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
GtkTreeSelection *selection;
+ GSList *l;
+
+ /* popup menu */
shell = GTK_MENU_SHELL(selfp->menu);
@@ -358,13 +365,15 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
mn_menu_shell_append(shell, NULL, NULL);
selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
- g_signal_connect_swapped(G_OBJECT(add_item), "activate", G_CALLBACK(self_activate_add), self);
- g_signal_connect_swapped(G_OBJECT(selfp->remove_item), "activate", G_CALLBACK(self_activate_remove), self);
- g_signal_connect_swapped(G_OBJECT(selfp->cut_item), "activate", G_CALLBACK(self_activate_cut), self);
- g_signal_connect_swapped(G_OBJECT(selfp->copy_item), "activate", G_CALLBACK(self_activate_copy), self);
- g_signal_connect_swapped(G_OBJECT(selfp->paste_item), "activate", G_CALLBACK(self_activate_paste), self);
- g_signal_connect_swapped(G_OBJECT(select_all_item), "activate", G_CALLBACK(self_select_all), self);
- g_signal_connect_swapped(G_OBJECT(selfp->properties_item), "activate", G_CALLBACK(self_activate_properties), self);
+ g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self);
+ g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self);
+ g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self);
+ g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self);
+ g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self);
+ g_signal_connect_swapped(select_all_item, "activate", G_CALLBACK(self_select_all), self);
+ g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+
+ /* store */
store = gtk_list_store_new(N_COLUMNS,
MN_TYPE_URI,
@@ -374,9 +383,11 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store));
g_object_unref(store);
+ /* mailbox column */
+
column = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(column, _("Mailbox"));
- gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_column_set_sort_column_id(column, COLUMN_MAILBOX);
renderer = gtk_cell_renderer_pixbuf_new();
@@ -386,42 +397,55 @@ mn_mailbox_view_init (MNMailboxView * self G_GNUC_UNUSED)
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer, "text", COLUMN_MAILBOX);
-
+
gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
+ /* format column */
+
column = gtk_tree_view_column_new_with_attributes(_("Format"),
gtk_cell_renderer_text_new(),
"text", COLUMN_FORMAT,
NULL);
- gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_column_set_sort_column_id(column, COLUMN_FORMAT);
gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
+ /* misc */
+
gtk_tree_view_set_search_column(GTK_TREE_VIEW(self), COLUMN_MAILBOX);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
- self_update(self);
+ MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+ self_append(self, l->data);
self_update_sensitivity(self);
- g_signal_connect_swapped(G_OBJECT(mn_shell->mailboxes), "list-changed", G_CALLBACK(self_update), self);
- g_signal_connect_swapped(G_OBJECT(selection), "changed", G_CALLBACK(self_update_sensitivity), self);
+ mn_g_object_connect(self,
+ mn_shell->mailboxes,
+ "signal::mailbox-added", self_mailbox_added_h, self,
+ "signal::mailbox-changed", self_mailbox_changed_h, self,
+ "signal::mailbox-removed", self_mailbox_removed_h, self,
+ NULL);
+
+ g_signal_connect_swapped(selection, "changed", G_CALLBACK(self_update_sensitivity), self);
- g_signal_connect(G_OBJECT(self), "popup-menu", G_CALLBACK(self_popup_menu_h), NULL);
- g_signal_connect(G_OBJECT(self), "button-press-event", G_CALLBACK(self_button_press_event_h), NULL);
- g_signal_connect(G_OBJECT(self), "row-activated", G_CALLBACK(self_row_activated_h), NULL);
+ g_object_connect(self,
+ "signal::popup-menu", self_popup_menu_h, NULL,
+ "signal::button-press-event", self_button_press_event_h, NULL,
+ "signal::row-activated", self_row_activated_h, NULL,
+ NULL);
-#line 417 "mn-mailbox-view.c"
+#line 441 "mn-mailbox-view.c"
}
}
#undef __GOB_FUNCTION__
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
void
mn_mailbox_view_activate_add (MNMailboxView * self)
-#line 425 "mn-mailbox-view.c"
+#line 449 "mn-mailbox-view.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -429,11 +453,11 @@ mn_mailbox_view_activate_add (MNMailboxView * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 437 "mn-mailbox-view.c"
+#line 461 "mn-mailbox-view.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -446,14 +470,14 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 56 "mn-mailbox-view.gob"
+#line 58 "mn-mailbox-view.gob"
static void
___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
-#line 453 "mn-mailbox-view.c"
+#line 477 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_add"
{
-#line 58 "mn-mailbox-view.gob"
+#line 60 "mn-mailbox-view.gob"
GtkWidget *toplevel;
GtkWidget *dialog;
@@ -461,20 +485,20 @@ ___real_mn_mailbox_view_activate_add (MNMailboxView * self G_GNUC_UNUSED)
toplevel = gtk_widget_get_toplevel(GTK_WIDGET(self));
dialog = mn_mailbox_properties_dialog_new((GtkWindow *) toplevel, MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD);
- g_signal_connect(G_OBJECT(dialog),
+ g_signal_connect(dialog,
"response",
G_CALLBACK(self_properties_add_response_h),
NULL);
-
+
gtk_widget_show(dialog);
}}
-#line 472 "mn-mailbox-view.c"
+#line 496 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
void
mn_mailbox_view_activate_remove (MNMailboxView * self)
-#line 478 "mn-mailbox-view.c"
+#line 502 "mn-mailbox-view.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -482,11 +506,11 @@ mn_mailbox_view_activate_remove (MNMailboxView * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 490 "mn-mailbox-view.c"
+#line 514 "mn-mailbox-view.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -499,24 +523,24 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 73 "mn-mailbox-view.gob"
+#line 75 "mn-mailbox-view.gob"
static void
___real_mn_mailbox_view_activate_remove (MNMailboxView * self G_GNUC_UNUSED)
-#line 506 "mn-mailbox-view.c"
+#line 530 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_remove"
{
-#line 75 "mn-mailbox-view.gob"
+#line 77 "mn-mailbox-view.gob"
self_remove_mailbox(self);
}}
-#line 514 "mn-mailbox-view.c"
+#line 538 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
void
mn_mailbox_view_activate_cut (MNMailboxView * self)
-#line 520 "mn-mailbox-view.c"
+#line 544 "mn-mailbox-view.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -524,11 +548,11 @@ mn_mailbox_view_activate_cut (MNMailboxView * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 532 "mn-mailbox-view.c"
+#line 556 "mn-mailbox-view.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -541,25 +565,25 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 79 "mn-mailbox-view.gob"
+#line 81 "mn-mailbox-view.gob"
static void
___real_mn_mailbox_view_activate_cut (MNMailboxView * self G_GNUC_UNUSED)
-#line 548 "mn-mailbox-view.c"
+#line 572 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_cut"
{
-#line 81 "mn-mailbox-view.gob"
+#line 83 "mn-mailbox-view.gob"
self_copy_mailbox(self);
self_remove_mailbox(self);
}}
-#line 557 "mn-mailbox-view.c"
+#line 581 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
void
mn_mailbox_view_activate_copy (MNMailboxView * self)
-#line 563 "mn-mailbox-view.c"
+#line 587 "mn-mailbox-view.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -567,11 +591,11 @@ mn_mailbox_view_activate_copy (MNMailboxView * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 575 "mn-mailbox-view.c"
+#line 599 "mn-mailbox-view.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -584,24 +608,24 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 86 "mn-mailbox-view.gob"
+#line 88 "mn-mailbox-view.gob"
static void
___real_mn_mailbox_view_activate_copy (MNMailboxView * self G_GNUC_UNUSED)
-#line 591 "mn-mailbox-view.c"
+#line 615 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_copy"
{
-#line 88 "mn-mailbox-view.gob"
+#line 90 "mn-mailbox-view.gob"
self_copy_mailbox(self);
}}
-#line 599 "mn-mailbox-view.c"
+#line 623 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
void
mn_mailbox_view_activate_paste (MNMailboxView * self)
-#line 605 "mn-mailbox-view.c"
+#line 629 "mn-mailbox-view.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -609,11 +633,11 @@ mn_mailbox_view_activate_paste (MNMailboxView * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 617 "mn-mailbox-view.c"
+#line 641 "mn-mailbox-view.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -626,36 +650,36 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 92 "mn-mailbox-view.gob"
+#line 94 "mn-mailbox-view.gob"
static void
___real_mn_mailbox_view_activate_paste (MNMailboxView * self G_GNUC_UNUSED)
-#line 633 "mn-mailbox-view.c"
+#line 657 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste"
{
-#line 94 "mn-mailbox-view.gob"
+#line 96 "mn-mailbox-view.gob"
gtk_clipboard_request_contents(global_clipboard,
gnome_copied_files_atom,
self_activate_paste_receive_cb,
NULL);
}}
-#line 644 "mn-mailbox-view.c"
+#line 668 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 101 "mn-mailbox-view.gob"
+#line 103 "mn-mailbox-view.gob"
static void
mn_mailbox_view_activate_paste_receive_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, gpointer data)
-#line 650 "mn-mailbox-view.c"
+#line 674 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_paste_receive_cb"
-#line 101 "mn-mailbox-view.gob"
+#line 103 "mn-mailbox-view.gob"
g_return_if_fail (clipboard != NULL);
-#line 101 "mn-mailbox-view.gob"
+#line 103 "mn-mailbox-view.gob"
g_return_if_fail (selection_data != NULL);
-#line 657 "mn-mailbox-view.c"
+#line 681 "mn-mailbox-view.c"
{
-#line 105 "mn-mailbox-view.gob"
+#line 107 "mn-mailbox-view.gob"
if (selection_data->type == gnome_copied_files_atom
&& selection_data->format == 8
@@ -700,13 +724,13 @@ mn_mailbox_view_activate_paste_receive_cb (GtkClipboard * clipboard, GtkSelectio
}
}
}}
-#line 704 "mn-mailbox-view.c"
+#line 728 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
void
mn_mailbox_view_activate_properties (MNMailboxView * self)
-#line 710 "mn-mailbox-view.c"
+#line 734 "mn-mailbox-view.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -714,11 +738,11 @@ mn_mailbox_view_activate_properties (MNMailboxView * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 722 "mn-mailbox-view.c"
+#line 746 "mn-mailbox-view.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -731,42 +755,42 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
-#line 150 "mn-mailbox-view.gob"
+#line 152 "mn-mailbox-view.gob"
static void
___real_mn_mailbox_view_activate_properties (MNMailboxView * self G_GNUC_UNUSED)
-#line 738 "mn-mailbox-view.c"
+#line 762 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties"
{
-#line 152 "mn-mailbox-view.gob"
+#line 154 "mn-mailbox-view.gob"
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
gtk_tree_selection_selected_foreach(selection, self_activate_properties_cb, self);
}}
-#line 749 "mn-mailbox-view.c"
+#line 773 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
static void
mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 755 "mn-mailbox-view.c"
+#line 779 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::activate_properties_cb"
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
g_return_if_fail (model != NULL);
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_TREE_MODEL (model));
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
g_return_if_fail (path != NULL);
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
g_return_if_fail (iter != NULL);
-#line 159 "mn-mailbox-view.gob"
+#line 161 "mn-mailbox-view.gob"
g_return_if_fail (data != NULL);
-#line 768 "mn-mailbox-view.c"
+#line 792 "mn-mailbox-view.c"
{
-#line 164 "mn-mailbox-view.gob"
+#line 166 "mn-mailbox-view.gob"
Self *self = data;
GtkWidget *toplevel;
@@ -780,119 +804,155 @@ mn_mailbox_view_activate_properties_cb (GtkTreeModel * model, GtkTreePath * path
mn_mailbox_properties_dialog_set_uri(MN_MAILBOX_PROPERTIES_DIALOG(dialog), uri);
g_object_unref(uri);
- g_signal_connect(G_OBJECT(dialog),
+ g_signal_connect(dialog,
"response",
G_CALLBACK(self_properties_edit_response_h),
NULL);
gtk_widget_show(dialog);
}}
-#line 791 "mn-mailbox-view.c"
+#line 815 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 293 "mn-mailbox-view.gob"
+#line 315 "mn-mailbox-view.gob"
static void
-___b_mn_mailbox_view_finalize (GObject * object G_GNUC_UNUSED)
-#line 799 "mn-mailbox-view.c"
-#define PARENT_HANDLER(___object) \
- { if(G_OBJECT_CLASS(parent_class)->finalize) \
- (* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+mn_mailbox_view_append (MNMailboxView * self, MNMailbox * mailbox)
+#line 823 "mn-mailbox-view.c"
{
-#define __GOB_FUNCTION__ "MN:Mailbox:View::finalize"
-#line 293 "mn-mailbox-view.gob"
- g_return_if_fail (object != NULL);
-#line 293 "mn-mailbox-view.gob"
- g_return_if_fail (G_IS_OBJECT (object));
-#line 809 "mn-mailbox-view.c"
+#define __GOB_FUNCTION__ "MN:Mailbox:View::append"
+#line 315 "mn-mailbox-view.gob"
+ g_return_if_fail (self != NULL);
+#line 315 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
+#line 315 "mn-mailbox-view.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 315 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 834 "mn-mailbox-view.c"
{
-#line 295 "mn-mailbox-view.gob"
+#line 317 "mn-mailbox-view.gob"
- g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, self_update, object);
- PARENT_HANDLER(object);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+ gtk_list_store_append(GTK_LIST_STORE(model), &iter);
+ self_update_iter(self, &iter, mailbox);
}}
-#line 816 "mn-mailbox-view.c"
+#line 845 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#undef PARENT_HANDLER
-#line 300 "mn-mailbox-view.gob"
+#line 326 "mn-mailbox-view.gob"
static void
-mn_mailbox_view_update (MNMailboxView * self)
-#line 823 "mn-mailbox-view.c"
+mn_mailbox_view_mailbox_added_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
+#line 851 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_added_h"
+#line 326 "mn-mailbox-view.gob"
+ g_return_if_fail (mailboxes != NULL);
+#line 326 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
+#line 326 "mn-mailbox-view.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 326 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 326 "mn-mailbox-view.gob"
+ g_return_if_fail (user_data != NULL);
+#line 864 "mn-mailbox-view.c"
{
-#define __GOB_FUNCTION__ "MN:Mailbox:View::update"
-#line 300 "mn-mailbox-view.gob"
- g_return_if_fail (self != NULL);
-#line 300 "mn-mailbox-view.gob"
- g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 830 "mn-mailbox-view.c"
+#line 330 "mn-mailbox-view.gob"
+
+ Self *self = user_data;
+
+ self_append(self, mailbox);
+ }}
+#line 872 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
+
+#line 336 "mn-mailbox-view.gob"
+static void
+mn_mailbox_view_mailbox_changed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
+#line 878 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_changed_h"
+#line 336 "mn-mailbox-view.gob"
+ g_return_if_fail (mailboxes != NULL);
+#line 336 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
+#line 336 "mn-mailbox-view.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 336 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 336 "mn-mailbox-view.gob"
+ g_return_if_fail (user_data != NULL);
+#line 891 "mn-mailbox-view.c"
{
-#line 302 "mn-mailbox-view.gob"
+#line 340 "mn-mailbox-view.gob"
- GtkTreeModel *model;
+ Self *self = user_data;
GtkTreeIter iter;
- gboolean valid;
- GSList *l;
-
- model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
- /* first step: remove or update old mailboxes */
+ if (self_find_mailbox(self, mailbox, &iter))
+ self_update_iter(self, &iter, mailbox);
+ }}
+#line 901 "mn-mailbox-view.c"
+#undef __GOB_FUNCTION__
- valid = gtk_tree_model_get_iter_first(model, &iter);
- while (valid)
- {
- MNURI *uri;
- GSList *elem;
-
- gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
- elem = mn_mailboxes_find_uri(mn_shell->mailboxes, uri);
- g_object_unref(uri);
-
- if (elem)
- {
- self_update_iter(self, &iter, elem->data);
- valid = gtk_tree_model_iter_next(model, &iter);
- }
- else
- valid = gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
- }
-
- /* second step: add new mailboxes */
+#line 348 "mn-mailbox-view.gob"
+static void
+mn_mailbox_view_mailbox_removed_h (MNMailboxes * mailboxes, MNMailbox * mailbox, gpointer user_data)
+#line 907 "mn-mailbox-view.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox:View::mailbox_removed_h"
+#line 348 "mn-mailbox-view.gob"
+ g_return_if_fail (mailboxes != NULL);
+#line 348 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
+#line 348 "mn-mailbox-view.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 348 "mn-mailbox-view.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 348 "mn-mailbox-view.gob"
+ g_return_if_fail (user_data != NULL);
+#line 920 "mn-mailbox-view.c"
+{
+#line 352 "mn-mailbox-view.gob"
+
+ Self *self = user_data;
+ GtkTreeIter iter;
- MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+ if (self_find_mailbox(self, mailbox, &iter))
{
- MNMailbox *mailbox = l->data;
-
- if (! self_has_mailbox(self, mailbox))
- {
- gtk_list_store_append(GTK_LIST_STORE(model), &iter);
- self_update_iter(self, &iter, mailbox);
- }
+ GtkTreeModel *model;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+ gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
}
}}
-#line 875 "mn-mailbox-view.c"
+#line 935 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
static void
mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox * mailbox)
-#line 881 "mn-mailbox-view.c"
+#line 941 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::update_iter"
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
g_return_if_fail (iter != NULL);
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
g_return_if_fail (mailbox != NULL);
-#line 345 "mn-mailbox-view.gob"
+#line 365 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 894 "mn-mailbox-view.c"
+#line 954 "mn-mailbox-view.c"
{
-#line 349 "mn-mailbox-view.gob"
+#line 369 "mn-mailbox-view.gob"
MNMailboxClass *class;
const char *stock_id;
@@ -918,66 +978,72 @@ mn_mailbox_view_update_iter (MNMailboxView * self, GtkTreeIter * iter, MNMailbox
COLUMN_FORMAT, class->format,
-1);
}}
-#line 922 "mn-mailbox-view.c"
+#line 982 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
static gboolean
-mn_mailbox_view_has_mailbox (MNMailboxView * self, MNMailbox * mailbox)
-#line 928 "mn-mailbox-view.c"
+mn_mailbox_view_find_mailbox (MNMailboxView * self, MNMailbox * mailbox, GtkTreeIter * iter)
+#line 988 "mn-mailbox-view.c"
{
-#define __GOB_FUNCTION__ "MN:Mailbox:View::has_mailbox"
-#line 375 "mn-mailbox-view.gob"
+#define __GOB_FUNCTION__ "MN:Mailbox:View::find_mailbox"
+#line 395 "mn-mailbox-view.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
g_return_val_if_fail (MN_IS_MAILBOX_VIEW (self), (gboolean )0);
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
g_return_val_if_fail (mailbox != NULL, (gboolean )0);
-#line 375 "mn-mailbox-view.gob"
+#line 395 "mn-mailbox-view.gob"
g_return_val_if_fail (MN_IS_MAILBOX (mailbox), (gboolean )0);
-#line 939 "mn-mailbox-view.c"
+#line 395 "mn-mailbox-view.gob"
+ g_return_val_if_fail (iter != NULL, (gboolean )0);
+#line 1001 "mn-mailbox-view.c"
{
-#line 377 "mn-mailbox-view.gob"
+#line 399 "mn-mailbox-view.gob"
GtkTreeModel *model;
- GtkTreeIter iter;
+ GtkTreeIter our_iter;
gboolean valid;
- gboolean has = FALSE;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
- valid = gtk_tree_model_get_iter_first(model, &iter);
+ valid = gtk_tree_model_get_iter_first(model, &our_iter);
+
while (valid)
{
MNURI *uri;
+ gboolean is;
- gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
- has = ! strcmp(uri->text, mailbox->uri->text);
+ gtk_tree_model_get(model, &our_iter, COLUMN_URI, &uri, -1);
+ is = ! strcmp(uri->text, mailbox->uri->text);
g_object_unref(uri);
- if (has)
- break;
+ if (is)
+ {
+ *iter = our_iter;
+ return TRUE;
+ }
- valid = gtk_tree_model_iter_next(model, &iter);
+ valid = gtk_tree_model_iter_next(model, &our_iter);
}
- return has;
+ return FALSE;
}}
-#line 966 "mn-mailbox-view.c"
+#line 1032 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 402 "mn-mailbox-view.gob"
+#line 428 "mn-mailbox-view.gob"
static void
mn_mailbox_view_update_sensitivity (MNMailboxView * self)
-#line 972 "mn-mailbox-view.c"
+#line 1038 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::update_sensitivity"
-#line 402 "mn-mailbox-view.gob"
+#line 428 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 402 "mn-mailbox-view.gob"
+#line 428 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 979 "mn-mailbox-view.c"
+#line 1045 "mn-mailbox-view.c"
{
-#line 404 "mn-mailbox-view.gob"
+#line 430 "mn-mailbox-view.gob"
GtkTreeSelection *selection;
gboolean has_selection;
@@ -990,22 +1056,22 @@ mn_mailbox_view_update_sensitivity (MNMailboxView * self)
gtk_widget_set_sensitive(selfp->copy_item, has_selection);
gtk_widget_set_sensitive(selfp->properties_item, has_selection);
}}
-#line 994 "mn-mailbox-view.c"
+#line 1060 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 417 "mn-mailbox-view.gob"
+#line 443 "mn-mailbox-view.gob"
static void
mn_mailbox_view_remove_mailbox (MNMailboxView * self)
-#line 1000 "mn-mailbox-view.c"
+#line 1066 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox"
-#line 417 "mn-mailbox-view.gob"
+#line 443 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 417 "mn-mailbox-view.gob"
+#line 443 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1007 "mn-mailbox-view.c"
+#line 1073 "mn-mailbox-view.c"
{
-#line 419 "mn-mailbox-view.gob"
+#line 445 "mn-mailbox-view.gob"
GtkTreeSelection *selection;
GSList *gconf_mailboxes;
@@ -1017,28 +1083,28 @@ mn_mailbox_view_remove_mailbox (MNMailboxView * self)
eel_gconf_set_string_list(MN_CONF_MAILBOXES, gconf_mailboxes);
eel_g_slist_free_deep(gconf_mailboxes);
}}
-#line 1021 "mn-mailbox-view.c"
+#line 1087 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
static void
mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1027 "mn-mailbox-view.c"
+#line 1093 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::remove_mailbox_cb"
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
g_return_if_fail (model != NULL);
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_TREE_MODEL (model));
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
g_return_if_fail (path != NULL);
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
g_return_if_fail (iter != NULL);
-#line 431 "mn-mailbox-view.gob"
+#line 457 "mn-mailbox-view.gob"
g_return_if_fail (data != NULL);
-#line 1040 "mn-mailbox-view.c"
+#line 1106 "mn-mailbox-view.c"
{
-#line 436 "mn-mailbox-view.gob"
+#line 462 "mn-mailbox-view.gob"
GSList **gconf_mailboxes = data;
MNURI *uri;
@@ -1052,22 +1118,22 @@ mn_mailbox_view_remove_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, Gtk
g_object_unref(uri);
}}
-#line 1056 "mn-mailbox-view.c"
+#line 1122 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 450 "mn-mailbox-view.gob"
+#line 476 "mn-mailbox-view.gob"
static void
mn_mailbox_view_copy_mailbox (MNMailboxView * self)
-#line 1062 "mn-mailbox-view.c"
+#line 1128 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox"
-#line 450 "mn-mailbox-view.gob"
+#line 476 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 450 "mn-mailbox-view.gob"
+#line 476 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1069 "mn-mailbox-view.c"
+#line 1135 "mn-mailbox-view.c"
{
-#line 452 "mn-mailbox-view.gob"
+#line 478 "mn-mailbox-view.gob"
GtkTreeSelection *selection;
GSList *uri_list = NULL;
@@ -1089,28 +1155,28 @@ mn_mailbox_view_copy_mailbox (MNMailboxView * self)
gnome_copied_files);
g_return_if_fail(status == TRUE);
}}
-#line 1093 "mn-mailbox-view.c"
+#line 1159 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
static void
mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTreeIter * iter, gpointer data)
-#line 1099 "mn-mailbox-view.c"
+#line 1165 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::copy_mailbox_cb"
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
g_return_if_fail (model != NULL);
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_TREE_MODEL (model));
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
g_return_if_fail (path != NULL);
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
g_return_if_fail (iter != NULL);
-#line 474 "mn-mailbox-view.gob"
+#line 500 "mn-mailbox-view.gob"
g_return_if_fail (data != NULL);
-#line 1112 "mn-mailbox-view.c"
+#line 1178 "mn-mailbox-view.c"
{
-#line 479 "mn-mailbox-view.gob"
+#line 505 "mn-mailbox-view.gob"
GSList **uri_list = data;
MNURI *uri;
@@ -1119,89 +1185,89 @@ mn_mailbox_view_copy_mailbox_cb (GtkTreeModel * model, GtkTreePath * path, GtkTr
*uri_list = g_slist_append(*uri_list, g_strdup(uri->text));
g_object_unref(uri);
}}
-#line 1123 "mn-mailbox-view.c"
+#line 1189 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
static void
mn_mailbox_view_get_clipboard_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, unsigned int info, gpointer user_data_or_owner)
-#line 1129 "mn-mailbox-view.c"
+#line 1195 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::get_clipboard_cb"
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
g_return_if_fail (clipboard != NULL);
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
g_return_if_fail (selection_data != NULL);
-#line 488 "mn-mailbox-view.gob"
+#line 514 "mn-mailbox-view.gob"
g_return_if_fail (user_data_or_owner != NULL);
-#line 1138 "mn-mailbox-view.c"
+#line 1204 "mn-mailbox-view.c"
{
-#line 493 "mn-mailbox-view.gob"
+#line 519 "mn-mailbox-view.gob"
const char *gnome_copied_files = user_data_or_owner;
gtk_selection_data_set(selection_data, gnome_copied_files_atom, 8, gnome_copied_files, strlen(gnome_copied_files));
}}
-#line 1145 "mn-mailbox-view.c"
+#line 1211 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 498 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
static void
mn_mailbox_view_clear_clipboard_cb (GtkClipboard * clipboard, gpointer user_data_or_owner)
-#line 1151 "mn-mailbox-view.c"
+#line 1217 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::clear_clipboard_cb"
-#line 498 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
g_return_if_fail (clipboard != NULL);
-#line 498 "mn-mailbox-view.gob"
+#line 524 "mn-mailbox-view.gob"
g_return_if_fail (user_data_or_owner != NULL);
-#line 1158 "mn-mailbox-view.c"
+#line 1224 "mn-mailbox-view.c"
{
-#line 501 "mn-mailbox-view.gob"
+#line 527 "mn-mailbox-view.gob"
char *gnome_copied_files = user_data_or_owner;
g_free(gnome_copied_files);
}}
-#line 1165 "mn-mailbox-view.c"
+#line 1231 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 506 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
static void
mn_mailbox_view_select_all (MNMailboxView * self)
-#line 1171 "mn-mailbox-view.c"
+#line 1237 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::select_all"
-#line 506 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 506 "mn-mailbox-view.gob"
+#line 532 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1178 "mn-mailbox-view.c"
+#line 1244 "mn-mailbox-view.c"
{
-#line 508 "mn-mailbox-view.gob"
+#line 534 "mn-mailbox-view.gob"
GtkTreeSelection *selection;
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
gtk_tree_selection_select_all(selection);
}}
-#line 1187 "mn-mailbox-view.c"
+#line 1253 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 515 "mn-mailbox-view.gob"
+#line 541 "mn-mailbox-view.gob"
static void
mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1193 "mn-mailbox-view.c"
+#line 1259 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::properties_add_response_h"
-#line 515 "mn-mailbox-view.gob"
+#line 541 "mn-mailbox-view.gob"
g_return_if_fail (dialog != NULL);
-#line 515 "mn-mailbox-view.gob"
+#line 541 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_DIALOG (dialog));
-#line 1200 "mn-mailbox-view.c"
+#line 1266 "mn-mailbox-view.c"
{
-#line 519 "mn-mailbox-view.gob"
+#line 545 "mn-mailbox-view.gob"
if (response == GTK_RESPONSE_HELP)
- mn_display_help("mailbox-properties");
+ mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
else if (response == GTK_RESPONSE_CANCEL)
gtk_widget_destroy(GTK_WIDGET(dialog));
else if (response == GTK_RESPONSE_ACCEPT)
@@ -1223,30 +1289,30 @@ mn_mailbox_view_properties_add_response_h (GtkDialog * dialog, int response, gpo
gtk_widget_destroy(GTK_WIDGET(dialog));
}
else
- mn_error_dialog(NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
+ mn_error_dialog(GTK_WINDOW(dialog), NULL, NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
g_object_unref(uri);
}
}}
-#line 1232 "mn-mailbox-view.c"
+#line 1298 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 549 "mn-mailbox-view.gob"
+#line 575 "mn-mailbox-view.gob"
static void
mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gpointer user_data)
-#line 1238 "mn-mailbox-view.c"
+#line 1304 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::properties_edit_response_h"
-#line 549 "mn-mailbox-view.gob"
+#line 575 "mn-mailbox-view.gob"
g_return_if_fail (dialog != NULL);
-#line 549 "mn-mailbox-view.gob"
+#line 575 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_DIALOG (dialog));
-#line 1245 "mn-mailbox-view.c"
+#line 1311 "mn-mailbox-view.c"
{
-#line 553 "mn-mailbox-view.gob"
+#line 579 "mn-mailbox-view.gob"
if (response == GTK_RESPONSE_HELP)
- mn_display_help("mailbox-properties");
+ mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
else
{
if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
@@ -1255,22 +1321,22 @@ mn_mailbox_view_properties_edit_response_h (GtkDialog * dialog, int response, gp
gtk_widget_destroy(GTK_WIDGET(dialog));
}
}}
-#line 1259 "mn-mailbox-view.c"
+#line 1325 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 565 "mn-mailbox-view.gob"
+#line 591 "mn-mailbox-view.gob"
static void
mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 activate_time)
-#line 1265 "mn-mailbox-view.c"
+#line 1331 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu"
-#line 565 "mn-mailbox-view.gob"
+#line 591 "mn-mailbox-view.gob"
g_return_if_fail (self != NULL);
-#line 565 "mn-mailbox-view.gob"
+#line 591 "mn-mailbox-view.gob"
g_return_if_fail (MN_IS_MAILBOX_VIEW (self));
-#line 1272 "mn-mailbox-view.c"
+#line 1338 "mn-mailbox-view.c"
{
-#line 567 "mn-mailbox-view.gob"
+#line 593 "mn-mailbox-view.gob"
gtk_clipboard_request_contents(global_clipboard,
gnome_copied_files_atom,
@@ -1278,24 +1344,24 @@ mn_mailbox_view_popup_menu (MNMailboxView * self, unsigned int button, guint32 a
self);
gtk_menu_popup(GTK_MENU(selfp->menu), NULL, NULL, NULL, NULL, button, activate_time);
}}
-#line 1282 "mn-mailbox-view.c"
+#line 1348 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
static void
mn_mailbox_view_popup_menu_receive_cb (GtkClipboard * clipboard, GtkSelectionData * selection_data, gpointer data)
-#line 1288 "mn-mailbox-view.c"
+#line 1354 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_receive_cb"
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
g_return_if_fail (clipboard != NULL);
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
g_return_if_fail (selection_data != NULL);
-#line 575 "mn-mailbox-view.gob"
+#line 601 "mn-mailbox-view.gob"
g_return_if_fail (data != NULL);
-#line 1297 "mn-mailbox-view.c"
+#line 1363 "mn-mailbox-view.c"
{
-#line 579 "mn-mailbox-view.gob"
+#line 605 "mn-mailbox-view.gob"
Self *self = data;
gboolean can_paste = FALSE;
@@ -1323,89 +1389,89 @@ mn_mailbox_view_popup_menu_receive_cb (GtkClipboard * clipboard, GtkSelectionDat
gtk_widget_set_sensitive(selfp->paste_item, can_paste);
}}
-#line 1327 "mn-mailbox-view.c"
+#line 1393 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 607 "mn-mailbox-view.gob"
+#line 633 "mn-mailbox-view.gob"
static gboolean
mn_mailbox_view_popup_menu_h (GtkWidget * widget, gpointer user_data)
-#line 1333 "mn-mailbox-view.c"
+#line 1399 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::popup_menu_h"
-#line 607 "mn-mailbox-view.gob"
+#line 633 "mn-mailbox-view.gob"
g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 607 "mn-mailbox-view.gob"
+#line 633 "mn-mailbox-view.gob"
g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 1340 "mn-mailbox-view.c"
+#line 1406 "mn-mailbox-view.c"
{
-#line 610 "mn-mailbox-view.gob"
+#line 636 "mn-mailbox-view.gob"
self_popup_menu(SELF(widget), 0, gtk_get_current_event_time());
return TRUE; /* a menu was activated */
}}
-#line 1347 "mn-mailbox-view.c"
+#line 1413 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
static gboolean
mn_mailbox_view_button_press_event_h (GtkWidget * widget, GdkEventButton * event, gpointer user_data)
-#line 1353 "mn-mailbox-view.c"
+#line 1419 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::button_press_event_h"
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
g_return_val_if_fail (widget != NULL, (gboolean )0);
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
g_return_val_if_fail (GTK_IS_WIDGET (widget), (gboolean )0);
-#line 615 "mn-mailbox-view.gob"
+#line 641 "mn-mailbox-view.gob"
g_return_val_if_fail (event != NULL, (gboolean )0);
-#line 1362 "mn-mailbox-view.c"
+#line 1428 "mn-mailbox-view.c"
{
-#line 619 "mn-mailbox-view.gob"
+#line 645 "mn-mailbox-view.gob"
if (event->button == 3)
self_popup_menu(SELF(widget), event->button, event->time);
return FALSE; /* propagate event */
}}
-#line 1371 "mn-mailbox-view.c"
+#line 1437 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
static void
mn_mailbox_view_row_activated_h (GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * column, gpointer user_data)
-#line 1377 "mn-mailbox-view.c"
+#line 1443 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::row_activated_h"
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
g_return_if_fail (treeview != NULL);
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_TREE_VIEW (treeview));
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
g_return_if_fail (path != NULL);
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
g_return_if_fail (column != NULL);
-#line 626 "mn-mailbox-view.gob"
+#line 652 "mn-mailbox-view.gob"
g_return_if_fail (GTK_IS_TREE_VIEW_COLUMN (column));
-#line 1390 "mn-mailbox-view.c"
+#line 1456 "mn-mailbox-view.c"
{
-#line 631 "mn-mailbox-view.gob"
+#line 657 "mn-mailbox-view.gob"
self_activate_properties(SELF(treeview));
}}
-#line 1396 "mn-mailbox-view.c"
+#line 1462 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
-#line 635 "mn-mailbox-view.gob"
+#line 661 "mn-mailbox-view.gob"
GtkWidget *
mn_mailbox_view_new (void)
-#line 1402 "mn-mailbox-view.c"
+#line 1468 "mn-mailbox-view.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox:View::new"
{
-#line 637 "mn-mailbox-view.gob"
+#line 663 "mn-mailbox-view.gob"
g_return_val_if_fail(mn_shell != NULL, NULL);
return GTK_WIDGET(GET_NEW);
}}
-#line 1411 "mn-mailbox-view.c"
+#line 1477 "mn-mailbox-view.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox-view.gob b/src/mn-mailbox-view.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
@@ -62,11 +64,11 @@ class MN:Mailbox:View from Gtk:Tree:View
toplevel = gtk_widget_get_toplevel(GTK_WIDGET(self));
dialog = mn_mailbox_properties_dialog_new((GtkWindow *) toplevel, MN_MAILBOX_PROPERTIES_DIALOG_MODE_ADD);
- g_signal_connect(G_OBJECT(dialog),
+ g_signal_connect(dialog,
"response",
G_CALLBACK(self_properties_add_response_h),
NULL);
-
+
gtk_widget_show(dialog);
}
@@ -174,7 +176,7 @@ class MN:Mailbox:View from Gtk:Tree:View
mn_mailbox_properties_dialog_set_uri(MN_MAILBOX_PROPERTIES_DIALOG(dialog), uri);
g_object_unref(uri);
- g_signal_connect(G_OBJECT(dialog),
+ g_signal_connect(dialog,
"response",
G_CALLBACK(self_properties_edit_response_h),
NULL);
@@ -220,6 +222,9 @@ class MN:Mailbox:View from Gtk:Tree:View
GtkTreeViewColumn *column;
GtkCellRenderer *renderer;
GtkTreeSelection *selection;
+ GSList *l;
+
+ /* popup menu */
shell = GTK_MENU_SHELL(selfp->menu);
@@ -234,13 +239,15 @@ class MN:Mailbox:View from Gtk:Tree:View
mn_menu_shell_append(shell, NULL, NULL);
selfp->properties_item = mn_menu_shell_append(shell, GTK_STOCK_PROPERTIES, NULL);
- g_signal_connect_swapped(G_OBJECT(add_item), "activate", G_CALLBACK(self_activate_add), self);
- g_signal_connect_swapped(G_OBJECT(selfp->remove_item), "activate", G_CALLBACK(self_activate_remove), self);
- g_signal_connect_swapped(G_OBJECT(selfp->cut_item), "activate", G_CALLBACK(self_activate_cut), self);
- g_signal_connect_swapped(G_OBJECT(selfp->copy_item), "activate", G_CALLBACK(self_activate_copy), self);
- g_signal_connect_swapped(G_OBJECT(selfp->paste_item), "activate", G_CALLBACK(self_activate_paste), self);
- g_signal_connect_swapped(G_OBJECT(select_all_item), "activate", G_CALLBACK(self_select_all), self);
- g_signal_connect_swapped(G_OBJECT(selfp->properties_item), "activate", G_CALLBACK(self_activate_properties), self);
+ g_signal_connect_swapped(add_item, "activate", G_CALLBACK(self_activate_add), self);
+ g_signal_connect_swapped(selfp->remove_item, "activate", G_CALLBACK(self_activate_remove), self);
+ g_signal_connect_swapped(selfp->cut_item, "activate", G_CALLBACK(self_activate_cut), self);
+ g_signal_connect_swapped(selfp->copy_item, "activate", G_CALLBACK(self_activate_copy), self);
+ g_signal_connect_swapped(selfp->paste_item, "activate", G_CALLBACK(self_activate_paste), self);
+ g_signal_connect_swapped(select_all_item, "activate", G_CALLBACK(self_select_all), self);
+ g_signal_connect_swapped(selfp->properties_item, "activate", G_CALLBACK(self_activate_properties), self);
+
+ /* store */
store = gtk_list_store_new(N_COLUMNS,
MN_TYPE_URI,
@@ -250,9 +257,11 @@ class MN:Mailbox:View from Gtk:Tree:View
gtk_tree_view_set_model(GTK_TREE_VIEW(self), GTK_TREE_MODEL(store));
g_object_unref(store);
+ /* mailbox column */
+
column = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(column, _("Mailbox"));
- gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_column_set_sort_column_id(column, COLUMN_MAILBOX);
renderer = gtk_cell_renderer_pixbuf_new();
@@ -262,83 +271,94 @@ class MN:Mailbox:View from Gtk:Tree:View
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(column, renderer, TRUE);
gtk_tree_view_column_add_attribute(column, renderer, "text", COLUMN_MAILBOX);
-
+
gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
+ /* format column */
+
column = gtk_tree_view_column_new_with_attributes(_("Format"),
gtk_cell_renderer_text_new(),
"text", COLUMN_FORMAT,
NULL);
- gtk_tree_view_column_set_resizable(column, TRUE);
+ gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE);
gtk_tree_view_column_set_sort_column_id(column, COLUMN_FORMAT);
gtk_tree_view_append_column(GTK_TREE_VIEW(self), column);
+ /* misc */
+
gtk_tree_view_set_search_column(GTK_TREE_VIEW(self), COLUMN_MAILBOX);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
- self_update(self);
+ MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+ self_append(self, l->data);
self_update_sensitivity(self);
- g_signal_connect_swapped(G_OBJECT(mn_shell->mailboxes), "list-changed", G_CALLBACK(self_update), self);
- g_signal_connect_swapped(G_OBJECT(selection), "changed", G_CALLBACK(self_update_sensitivity), self);
+ mn_g_object_connect(self,
+ mn_shell->mailboxes,
+ "signal::mailbox-added", self_mailbox_added_h, self,
+ "signal::mailbox-changed", self_mailbox_changed_h, self,
+ "signal::mailbox-removed", self_mailbox_removed_h, self,
+ NULL);
+
+ g_signal_connect_swapped(selection, "changed", G_CALLBACK(self_update_sensitivity), self);
- g_signal_connect(G_OBJECT(self), "popup-menu", G_CALLBACK(self_popup_menu_h), NULL);
- g_signal_connect(G_OBJECT(self), "button-press-event", G_CALLBACK(self_button_press_event_h), NULL);
- g_signal_connect(G_OBJECT(self), "row-activated", G_CALLBACK(self_row_activated_h), NULL);
+ g_object_connect(self,
+ "signal::popup-menu", self_popup_menu_h, NULL,
+ "signal::button-press-event", self_button_press_event_h, NULL,
+ "signal::row-activated", self_row_activated_h, NULL,
+ NULL);
}
- override (G:Object) void
- finalize (G:Object *object (check null type))
+ private void
+ append (self, MN:Mailbox *mailbox (check null type))
{
- g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, self_update, object);
- PARENT_HANDLER(object);
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+ gtk_list_store_append(GTK_LIST_STORE(model), &iter);
+ self_update_iter(self, &iter, mailbox);
}
private void
- update (self)
+ mailbox_added_h (MN:Mailboxes *mailboxes (check null type),
+ MN:Mailbox *mailbox (check null type),
+ gpointer user_data (check null))
{
- GtkTreeModel *model;
+ Self *self = user_data;
+
+ self_append(self, mailbox);
+ }
+
+ private void
+ mailbox_changed_h (MN:Mailboxes *mailboxes (check null type),
+ MN:Mailbox *mailbox (check null type),
+ gpointer user_data (check null))
+ {
+ Self *self = user_data;
GtkTreeIter iter;
- gboolean valid;
- GSList *l;
-
- model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
- /* first step: remove or update old mailboxes */
+ if (self_find_mailbox(self, mailbox, &iter))
+ self_update_iter(self, &iter, mailbox);
+ }
- valid = gtk_tree_model_get_iter_first(model, &iter);
- while (valid)
- {
- MNURI *uri;
- GSList *elem;
-
- gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
- elem = mn_mailboxes_find_uri(mn_shell->mailboxes, uri);
- g_object_unref(uri);
-
- if (elem)
- {
- self_update_iter(self, &iter, elem->data);
- valid = gtk_tree_model_iter_next(model, &iter);
- }
- else
- valid = gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
- }
-
- /* second step: add new mailboxes */
+ private void
+ mailbox_removed_h (MN:Mailboxes *mailboxes (check null type),
+ MN:Mailbox *mailbox (check null type),
+ gpointer user_data (check null))
+ {
+ Self *self = user_data;
+ GtkTreeIter iter;
- MN_LIST_FOREACH(l, mn_mailboxes_get(mn_shell->mailboxes))
+ if (self_find_mailbox(self, mailbox, &iter))
{
- MNMailbox *mailbox = l->data;
-
- if (! self_has_mailbox(self, mailbox))
- {
- gtk_list_store_append(GTK_LIST_STORE(model), &iter);
- self_update_iter(self, &iter, mailbox);
- }
+ GtkTreeModel *model;
+
+ model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
+ gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
}
}
@@ -373,30 +393,36 @@ class MN:Mailbox:View from Gtk:Tree:View
}
private gboolean
- has_mailbox (self, MN:Mailbox *mailbox (check null type))
+ find_mailbox (self,
+ MN:Mailbox *mailbox (check null type),
+ GtkTreeIter *iter (check null))
{
GtkTreeModel *model;
- GtkTreeIter iter;
+ GtkTreeIter our_iter;
gboolean valid;
- gboolean has = FALSE;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(self));
- valid = gtk_tree_model_get_iter_first(model, &iter);
+ valid = gtk_tree_model_get_iter_first(model, &our_iter);
+
while (valid)
{
MNURI *uri;
+ gboolean is;
- gtk_tree_model_get(model, &iter, COLUMN_URI, &uri, -1);
- has = ! strcmp(uri->text, mailbox->uri->text);
+ gtk_tree_model_get(model, &our_iter, COLUMN_URI, &uri, -1);
+ is = ! strcmp(uri->text, mailbox->uri->text);
g_object_unref(uri);
- if (has)
- break;
+ if (is)
+ {
+ *iter = our_iter;
+ return TRUE;
+ }
- valid = gtk_tree_model_iter_next(model, &iter);
+ valid = gtk_tree_model_iter_next(model, &our_iter);
}
- return has;
+ return FALSE;
}
private void
@@ -518,7 +544,7 @@ class MN:Mailbox:View from Gtk:Tree:View
gpointer user_data)
{
if (response == GTK_RESPONSE_HELP)
- mn_display_help("mailbox-properties");
+ mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
else if (response == GTK_RESPONSE_CANCEL)
gtk_widget_destroy(GTK_WIDGET(dialog));
else if (response == GTK_RESPONSE_ACCEPT)
@@ -540,7 +566,7 @@ class MN:Mailbox:View from Gtk:Tree:View
gtk_widget_destroy(GTK_WIDGET(dialog));
}
else
- mn_error_dialog(NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
+ mn_error_dialog(GTK_WINDOW(dialog), NULL, NULL, _("Unable to add mailbox"), _("The mailbox is already in the list."));
g_object_unref(uri);
}
@@ -552,7 +578,7 @@ class MN:Mailbox:View from Gtk:Tree:View
gpointer user_data)
{
if (response == GTK_RESPONSE_HELP)
- mn_display_help("mailbox-properties");
+ mn_display_help(GTK_WINDOW(dialog), "mailbox-properties");
else
{
if (response == GTK_RESPONSE_APPLY || response == GTK_RESPONSE_OK)
diff --git a/src/mn-mailbox-view.h b/src/mn-mailbox-view.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-mailbox.c b/src/mn-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -23,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 44 "mn-mailbox.gob"
+#line 53 "mn-mailbox.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -61,7 +61,9 @@ typedef struct
gpointer user_data;
} NewInfo;
-#line 65 "mn-mailbox.c"
+ GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
+
+#line 67 "mn-mailbox.c"
/* self casting macros */
#define SELF(x) MN_MAILBOX(x)
#define SELF_CONST(x) MN_MAILBOX_CONST(x)
@@ -79,22 +81,71 @@ typedef MNMailboxClass SelfClass;
static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
static void mn_mailbox_init (MNMailbox * o) G_GNUC_UNUSED;
-static void mn_mailbox_class_init (MNMailboxClass * c) G_GNUC_UNUSED;
+static void mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new) G_GNUC_UNUSED;
+static void mn_mailbox_class_init (MNMailboxClass * class) G_GNUC_UNUSED;
+static void ___c_mn_mailbox_finalize (GObject * object) G_GNUC_UNUSED;
static gpointer mn_mailbox_new_async_thread (gpointer data) G_GNUC_UNUSED;
static void mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data) G_GNUC_UNUSED;
static gboolean mn_mailbox_impl_is (MNMailbox * self, MNURI * uri) G_GNUC_UNUSED;
static void mn_mailbox_impl_check (MNMailbox * self) G_GNUC_UNUSED;
static void mn_mailbox_impl_threaded_check (MNMailbox * self) G_GNUC_UNUSED;
+/*
+ * Signal connection wrapper macro shortcuts
+ */
+#define self_connect__messages_changed(object,func,data) mn_mailbox_connect__messages_changed((object),(func),(data))
+#define self_connect_after__messages_changed(object,func,data) mn_mailbox_connect_after__messages_changed((object),(func),(data))
+#define self_connect_data__messages_changed(object,func,data,destroy_data,flags) mn_mailbox_connect_data__messages_changed((object),(func),(data),(destroy_data),(flags))
+
+typedef void (*___Sig1) (MNMailbox *, gboolean , gpointer);
+
+static void
+___marshal_Sig1 (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ register ___Sig1 callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure)) {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ } else {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+
+ callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback);
+
+ callback ((MNMailbox *)data1,
+ (gboolean ) g_value_get_boolean (param_values + 1),
+ data2);
+}
+
+
+enum {
+ MESSAGES_CHANGED_SIGNAL,
+ LAST_SIGNAL
+};
+
enum {
PROP_0,
PROP_URI,
PROP_NAME,
PROP_AUTOMATIC,
PROP_HAS_NEW,
+ PROP_MESSAGES,
PROP_ERROR
};
+static guint object_signals[LAST_SIGNAL] = {0};
+
/* pointer to the class of our parent */
static GObjectClass *parent_class = NULL;
@@ -104,9 +155,11 @@ static GObjectClass *parent_class = NULL;
#define self_set_automatic mn_mailbox_set_automatic
#define self_get_has_new mn_mailbox_get_has_new
#define self_set_has_new mn_mailbox_set_has_new
+#define self_get_messages mn_mailbox_get_messages
+#define self_set_messages mn_mailbox_set_messages
+#define self_messages_changed mn_mailbox_messages_changed
#define self_set_error mn_mailbox_set_error
#define self_get_error mn_mailbox_get_error
-#define self_get_types mn_mailbox_get_types
#define self_new_async mn_mailbox_new_async
#define self_new_async_thread mn_mailbox_new_async_thread
#define self_set_init_error mn_mailbox_set_init_error
@@ -168,9 +221,9 @@ ___dispose (GObject *obj_self)
MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 121 "mn-mailbox.gob"
- if(self->uri) { ((*(void (*)(void *))g_object_unref)) (self->uri); self->uri = NULL; }
-#line 174 "mn-mailbox.c"
+#line 132 "mn-mailbox.gob"
+ if(self->uri) { g_object_unref ((gpointer) self->uri); self->uri = NULL; }
+#line 227 "mn-mailbox.c"
}
#undef __GOB_FUNCTION__
@@ -179,26 +232,26 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Mailbox::finalize"
- MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
- gpointer priv = self->_priv;
- if(G_OBJECT_CLASS(parent_class)->finalize) \
- (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 132 "mn-mailbox.gob"
- if(self->_priv->name) { ((*(void (*)(void *))g_free)) (self->_priv->name); self->_priv->name = NULL; }
-#line 189 "mn-mailbox.c"
-#line 146 "mn-mailbox.gob"
- if(self->_priv->error) { ((*(void (*)(void *))g_free)) (self->_priv->error); self->_priv->error = NULL; }
-#line 192 "mn-mailbox.c"
-#line 166 "mn-mailbox.gob"
- if(self->_priv->monitor_handle) { ((*(void (*)(void *))gnome_vfs_monitor_cancel)) (self->_priv->monitor_handle); self->_priv->monitor_handle = NULL; }
-#line 195 "mn-mailbox.c"
-#line 167 "mn-mailbox.gob"
- if(self->_priv->monitor_uri) { ((*(void (*)(void *))g_free)) (self->_priv->monitor_uri); self->_priv->monitor_uri = NULL; }
-#line 198 "mn-mailbox.c"
-#line 310 "mn-mailbox.gob"
- if(self->_priv->init_error) { ((*(void (*)(void *))g_free)) (self->_priv->init_error); self->_priv->init_error = NULL; }
-#line 201 "mn-mailbox.c"
- g_free (priv);
+ MNMailbox *self G_GNUC_UNUSED = MN_MAILBOX (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 265 "mn-mailbox.gob"
+ ___c_mn_mailbox_finalize(obj_self);
+#line 240 "mn-mailbox.c"
+#line 143 "mn-mailbox.gob"
+ if(self->_priv->name) { g_free ((gpointer) self->_priv->name); self->_priv->name = NULL; }
+#line 243 "mn-mailbox.c"
+#line 157 "mn-mailbox.gob"
+ if(self->_priv->messages) { mn_g_object_slist_free ((gpointer) self->_priv->messages); self->_priv->messages = NULL; }
+#line 246 "mn-mailbox.c"
+#line 211 "mn-mailbox.gob"
+ if(self->_priv->error) { g_free ((gpointer) self->_priv->error); self->_priv->error = NULL; }
+#line 249 "mn-mailbox.c"
+#line 232 "mn-mailbox.gob"
+ if(self->_priv->monitor_uri) { g_free ((gpointer) self->_priv->monitor_uri); self->_priv->monitor_uri = NULL; }
+#line 252 "mn-mailbox.c"
+#line 365 "mn-mailbox.gob"
+ if(self->_priv->init_error) { g_free ((gpointer) self->_priv->init_error); self->_priv->init_error = NULL; }
+#line 255 "mn-mailbox.c"
}
#undef __GOB_FUNCTION__
@@ -206,25 +259,45 @@ static void
mn_mailbox_init (MNMailbox * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:Mailbox::init"
- o->_priv = g_new0 (MNMailboxPrivate, 1);
-#line 44 "mn-mailbox.gob"
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNMailboxPrivate);
+#line 53 "mn-mailbox.gob"
o->uri = NULL;
-#line 213 "mn-mailbox.c"
+#line 266 "mn-mailbox.c"
}
#undef __GOB_FUNCTION__
+#line 237 "mn-mailbox.gob"
static void
-mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
+mn_mailbox_class_init (MNMailboxClass * class G_GNUC_UNUSED)
+#line 272 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::class_init"
- GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+
+ g_type_class_add_private(class,sizeof(MNMailboxPrivate));
parent_class = g_type_class_ref (G_TYPE_OBJECT);
- c->impl_is = NULL;
- c->impl_check = NULL;
- c->impl_threaded_check = NULL;
- g_object_class->dispose = ___dispose;
+ object_signals[MESSAGES_CHANGED_SIGNAL] =
+ g_signal_new ("messages_changed",
+ G_TYPE_FROM_CLASS (g_object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ G_STRUCT_OFFSET (MNMailboxClass, messages_changed),
+ NULL, NULL,
+ ___marshal_Sig1,
+ G_TYPE_NONE, 1,
+ G_TYPE_BOOLEAN);
+ if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
+ g_error("mn-mailbox.gob line 208: Type mismatch of \"messages_changed\" signal signature");
+ }
+
+ class->messages_changed = NULL;
+#line 265 "mn-mailbox.gob"
g_object_class->finalize = ___finalize;
+#line 297 "mn-mailbox.c"
+ class->impl_is = NULL;
+ class->impl_check = NULL;
+ class->impl_threaded_check = NULL;
+ g_object_class->dispose = ___dispose;
g_object_class->get_property = ___object_get_property;
g_object_class->set_property = ___object_set_property;
{
@@ -266,6 +339,14 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
g_object_class_install_property (g_object_class,
PROP_HAS_NEW,
param_spec);
+ param_spec = g_param_spec_pointer
+ ("messages" /* name */,
+ NULL /* nick */,
+ _("The list of new and unread MNMessage objects") /* blurb */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE));
+ g_object_class_install_property (g_object_class,
+ PROP_MESSAGES,
+ param_spec);
param_spec = g_param_spec_string
("error" /* name */,
NULL /* nick */,
@@ -276,6 +357,36 @@ mn_mailbox_class_init (MNMailboxClass * c G_GNUC_UNUSED)
PROP_ERROR,
param_spec);
}
+ {
+#line 238 "mn-mailbox.gob"
+
+ int i = 0;
+
+#ifdef WITH_MBOX
+ mn_mailbox_types[i++] = MN_TYPE_MBOX_MAILBOX;
+#endif
+#ifdef WITH_MH
+ mn_mailbox_types[i++] = MN_TYPE_MH_MAILBOX;
+#endif
+#ifdef WITH_MAILDIR
+ mn_mailbox_types[i++] = MN_TYPE_MAILDIR_MAILBOX;
+#endif
+#ifdef WITH_POP3
+ mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX;
+#endif
+#ifdef WITH_IMAP
+ mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX;
+#endif
+#ifdef WITH_SYLPHEED
+ mn_mailbox_types[i++] = MN_TYPE_SYLPHEED_MAILBOX;
+#endif
+#ifdef WITH_GMAIL
+ mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX;
+#endif
+ mn_mailbox_types[i] = 0;
+
+#line 389 "mn-mailbox.c"
+ }
}
#undef __GOB_FUNCTION__
@@ -293,41 +404,76 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_URI:
{
-#line 126 "mn-mailbox.gob"
+#line 137 "mn-mailbox.gob"
g_return_if_fail(self->uri == NULL);
self->uri = MN_URI(g_value_dup_object(VAL));
selfp->name = g_strdup(self->uri->human_readable);
-#line 303 "mn-mailbox.c"
+#line 414 "mn-mailbox.c"
}
break;
case PROP_NAME:
{
-#line 133 "mn-mailbox.gob"
+#line 144 "mn-mailbox.gob"
{ char *old = self->_priv->name; self->_priv->name = g_value_dup_string (VAL); g_free (old); }
-#line 310 "mn-mailbox.c"
+#line 421 "mn-mailbox.c"
}
break;
case PROP_AUTOMATIC:
{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
self->_priv->automatic = g_value_get_boolean (VAL);
-#line 317 "mn-mailbox.c"
+#line 428 "mn-mailbox.c"
}
break;
case PROP_HAS_NEW:
{
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
self->_priv->has_new = g_value_get_boolean (VAL);
-#line 324 "mn-mailbox.c"
+#line 435 "mn-mailbox.c"
+ }
+ break;
+ case PROP_MESSAGES:
+ {
+#line 161 "mn-mailbox.gob"
+
+ GSList *messages;
+ GSList *l;
+ gboolean changed = FALSE;
+ gboolean has_new = FALSE;
+
+ messages = g_value_get_pointer(VAL);
+
+ MN_LIST_FOREACH(l, selfp->messages)
+ if (! mn_message_slist_find_by_id(messages, l->data))
+ {
+ changed = TRUE;
+ break;
+ }
+
+ MN_LIST_FOREACH(l, messages)
+ if (! mn_message_slist_find_by_id(selfp->messages, l->data))
+ {
+ changed = TRUE;
+ has_new = TRUE;
+ break;
+ }
+
+ mn_g_object_slist_free(selfp->messages);
+ selfp->messages = mn_g_object_slist_copy(messages);
+
+ if (changed)
+ self_messages_changed(self, has_new);
+
+#line 470 "mn-mailbox.c"
}
break;
case PROP_ERROR:
{
-#line 147 "mn-mailbox.gob"
+#line 212 "mn-mailbox.gob"
{ char *old = self->_priv->error; self->_priv->error = g_value_dup_string (VAL); g_free (old); }
-#line 331 "mn-mailbox.c"
+#line 477 "mn-mailbox.c"
}
break;
default:
@@ -356,30 +502,39 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_NAME:
{
-#line 133 "mn-mailbox.gob"
+#line 144 "mn-mailbox.gob"
g_value_set_string (VAL, self->_priv->name);
-#line 362 "mn-mailbox.c"
+#line 508 "mn-mailbox.c"
}
break;
case PROP_AUTOMATIC:
{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
g_value_set_boolean (VAL, self->_priv->automatic);
-#line 369 "mn-mailbox.c"
+#line 515 "mn-mailbox.c"
}
break;
case PROP_HAS_NEW:
{
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
g_value_set_boolean (VAL, self->_priv->has_new);
-#line 376 "mn-mailbox.c"
+#line 522 "mn-mailbox.c"
+ }
+ break;
+ case PROP_MESSAGES:
+ {
+#line 191 "mn-mailbox.gob"
+
+ g_value_set_pointer(VAL, selfp->messages);
+
+#line 531 "mn-mailbox.c"
}
break;
case PROP_ERROR:
{
-#line 147 "mn-mailbox.gob"
+#line 212 "mn-mailbox.gob"
g_value_set_string (VAL, self->_priv->error);
-#line 383 "mn-mailbox.c"
+#line 538 "mn-mailbox.c"
}
break;
default:
@@ -395,89 +550,148 @@ g_value_set_string (VAL, self->_priv->error);
#undef __GOB_FUNCTION__
-
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
const char *
mn_mailbox_get_name (MNMailbox * self)
-#line 403 "mn-mailbox.c"
+#line 557 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::get_name"
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
g_return_val_if_fail (self != NULL, (const char * )0);
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
g_return_val_if_fail (MN_IS_MAILBOX (self), (const char * )0);
-#line 410 "mn-mailbox.c"
+#line 564 "mn-mailbox.c"
{
-#line 134 "mn-mailbox.gob"
+#line 145 "mn-mailbox.gob"
return selfp->name; }}
-#line 414 "mn-mailbox.c"
+#line 568 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
gboolean
mn_mailbox_get_automatic (MNMailbox * self)
-#line 420 "mn-mailbox.c"
+#line 574 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::get_automatic"
{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
gboolean val; g_object_get (G_OBJECT (self), "automatic", &val, NULL); return val;
}}
-#line 427 "mn-mailbox.c"
+#line 581 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
void
mn_mailbox_set_automatic (MNMailbox * self, gboolean val)
-#line 433 "mn-mailbox.c"
+#line 587 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::set_automatic"
{
-#line 137 "mn-mailbox.gob"
+#line 148 "mn-mailbox.gob"
g_object_set (G_OBJECT (self), "automatic", val, NULL);
}}
-#line 440 "mn-mailbox.c"
+#line 594 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
gboolean
mn_mailbox_get_has_new (MNMailbox * self)
-#line 446 "mn-mailbox.c"
+#line 600 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::get_has_new"
{
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
gboolean val; g_object_get (G_OBJECT (self), "has_new", &val, NULL); return val;
}}
-#line 453 "mn-mailbox.c"
+#line 607 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
void
mn_mailbox_set_has_new (MNMailbox * self, gboolean val)
-#line 459 "mn-mailbox.c"
+#line 613 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::set_has_new"
{
-#line 142 "mn-mailbox.gob"
+#line 153 "mn-mailbox.gob"
g_object_set (G_OBJECT (self), "has_new", val, NULL);
}}
-#line 466 "mn-mailbox.c"
+#line 620 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 148 "mn-mailbox.gob"
+#line 191 "mn-mailbox.gob"
+gpointer
+mn_mailbox_get_messages (MNMailbox * self)
+#line 626 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::get_messages"
+{
+#line 158 "mn-mailbox.gob"
+ gpointer val; g_object_get (G_OBJECT (self), "messages", &val, NULL); return val;
+}}
+#line 633 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 161 "mn-mailbox.gob"
+void
+mn_mailbox_set_messages (MNMailbox * self, gpointer val)
+#line 639 "mn-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailbox::set_messages"
+{
+#line 158 "mn-mailbox.gob"
+ g_object_set (G_OBJECT (self), "messages", val, NULL);
+}}
+#line 646 "mn-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 208 "mn-mailbox.gob"
+static void
+mn_mailbox_messages_changed (MNMailbox * self, gboolean has_new)
+#line 652 "mn-mailbox.c"
+{
+ GValue ___param_values[2];
+ GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 208 "mn-mailbox.gob"
+ g_return_if_fail (self != NULL);
+#line 208 "mn-mailbox.gob"
+ g_return_if_fail (MN_IS_MAILBOX (self));
+#line 664 "mn-mailbox.c"
+
+ ___param_values[0].g_type = 0;
+ g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+ g_value_set_instance (&___param_values[0], (gpointer) self);
+
+ ___param_values[1].g_type = 0;
+ g_value_init (&___param_values[1], G_TYPE_BOOLEAN);
+ g_value_set_boolean (&___param_values[1], (gboolean ) has_new);
+
+ g_signal_emitv (___param_values,
+ object_signals[MESSAGES_CHANGED_SIGNAL],
+ 0 /* detail */,
+ &___return_val);
+
+ g_value_unset (&___param_values[0]);
+ g_value_unset (&___param_values[1]);
+}
+
+#line 213 "mn-mailbox.gob"
void
mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
-#line 472 "mn-mailbox.c"
+#line 686 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::set_error"
-#line 148 "mn-mailbox.gob"
+#line 213 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 148 "mn-mailbox.gob"
+#line 213 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 479 "mn-mailbox.c"
+#line 693 "mn-mailbox.c"
{
-#line 150 "mn-mailbox.gob"
+#line 215 "mn-mailbox.gob"
va_list args;
char *error = NULL;
@@ -492,78 +706,54 @@ mn_mailbox_set_error (MNMailbox * self, const char * format, ...)
g_object_set(G_OBJECT(self), MN_MAILBOX_PROP_ERROR(error), NULL);
g_free(error);
}}
-#line 496 "mn-mailbox.c"
+#line 710 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
const char *
mn_mailbox_get_error (MNMailbox * self)
-#line 502 "mn-mailbox.c"
+#line 716 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::get_error"
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
g_return_val_if_fail (self != NULL, (const char * )0);
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
g_return_val_if_fail (MN_IS_MAILBOX (self), (const char * )0);
-#line 509 "mn-mailbox.c"
+#line 723 "mn-mailbox.c"
{
-#line 164 "mn-mailbox.gob"
+#line 229 "mn-mailbox.gob"
return selfp->error; }}
-#line 513 "mn-mailbox.c"
+#line 727 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 172 "mn-mailbox.gob"
-const GType *
-mn_mailbox_get_types (void)
-#line 519 "mn-mailbox.c"
+
+#line 265 "mn-mailbox.gob"
+static void
+___c_mn_mailbox_finalize (GObject * object G_GNUC_UNUSED)
+#line 734 "mn-mailbox.c"
+#define PARENT_HANDLER(___object) \
+ { if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
{
-#define __GOB_FUNCTION__ "MN:Mailbox::get_types"
+#define __GOB_FUNCTION__ "MN:Mailbox::finalize"
+#line 265 "mn-mailbox.gob"
+ g_return_if_fail (object != NULL);
+#line 265 "mn-mailbox.gob"
+ g_return_if_fail (G_IS_OBJECT (object));
+#line 744 "mn-mailbox.c"
{
-#line 174 "mn-mailbox.gob"
-
- static GType *types = NULL;
- G_LOCK_DEFINE_STATIC(types);
-
- G_LOCK(types);
- if (! types)
- {
- GType tmp_types[7];
- int n_types = 0;
- int i;
-
-#ifdef WITH_MBOX
- tmp_types[n_types++] = MN_TYPE_MBOX_MAILBOX;
-#endif
-#ifdef WITH_MH
- tmp_types[n_types++] = MN_TYPE_MH_MAILBOX;
-#endif
-#ifdef WITH_MAILDIR
- tmp_types[n_types++] = MN_TYPE_MAILDIR_MAILBOX;
-#endif
-#ifdef WITH_POP3
- tmp_types[n_types++] = MN_TYPE_POP3_MAILBOX;
-#endif
-#ifdef WITH_IMAP
- tmp_types[n_types++] = MN_TYPE_IMAP_MAILBOX;
-#endif
-#ifdef WITH_SYLPHEED
- tmp_types[n_types++] = MN_TYPE_SYLPHEED_MAILBOX;
-#endif
-#ifdef WITH_GMAIL
- tmp_types[n_types++] = MN_TYPE_GMAIL_MAILBOX;
-#endif
+#line 267 "mn-mailbox.gob"
- types = g_new(GType, n_types + 1);
- for (i = 0; i < n_types; i++)
- types[i] = tmp_types[i];
- types[n_types] = 0;
- }
- G_UNLOCK(types);
-
- return types;
+ Self *self = SELF(object);
+
+ if (selfp->monitor_handle)
+ gnome_vfs_monitor_cancel(selfp->monitor_handle);
+
+ PARENT_HANDLER(object);
}}
-#line 566 "mn-mailbox.c"
+#line 755 "mn-mailbox.c"
#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
/**
* mn_mailbox_new_async:
@@ -575,21 +765,21 @@ mn_mailbox_get_types (void)
* Creates a new #MNMailbox asynchronously. The newly created
* #MNMailbox will be passed to @callback.
**/
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
void
mn_mailbox_new_async (MNURI * uri, gpointer callback, gpointer user_data)
-#line 582 "mn-mailbox.c"
+#line 772 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::new_async"
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
g_return_if_fail (uri != NULL);
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
g_return_if_fail (MN_IS_URI (uri));
-#line 227 "mn-mailbox.gob"
+#line 286 "mn-mailbox.gob"
g_return_if_fail (callback != NULL);
-#line 591 "mn-mailbox.c"
+#line 781 "mn-mailbox.c"
{
-#line 231 "mn-mailbox.gob"
+#line 290 "mn-mailbox.gob"
NewInfo *info;
@@ -600,17 +790,17 @@ mn_mailbox_new_async (MNURI * uri, gpointer callback, gpointer user_data)
mn_thread_create(self_new_async_thread, info);
}}
-#line 604 "mn-mailbox.c"
+#line 794 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 242 "mn-mailbox.gob"
+#line 301 "mn-mailbox.gob"
static gpointer
mn_mailbox_new_async_thread (gpointer data)
-#line 610 "mn-mailbox.c"
+#line 800 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::new_async_thread"
{
-#line 244 "mn-mailbox.gob"
+#line 303 "mn-mailbox.gob"
NewInfo *info = data;
Self *mailbox = NULL;
@@ -623,22 +813,18 @@ mn_mailbox_new_async_thread (gpointer data)
if (! mailbox)
{
- const GType *types;
int i;
- types = self_get_types();
- for (i = 0; types[i]; i++)
+ for (i = 0; mn_mailbox_types[i]; i++)
{
SelfClass *class;
- gboolean is;
- class = g_type_class_ref(types[i]);
- is = class->impl_is(NULL, info->uri);
- g_type_class_unref(class);
+ class = g_type_class_peek(mn_mailbox_types[i]);
+ g_return_val_if_fail(class != NULL, NULL);
- if (is)
+ if (class->impl_is(NULL, info->uri))
{
- mailbox = g_object_new(types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
+ mailbox = g_object_new(mn_mailbox_types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
if (mailbox->_priv->init_error)
{
MNMailbox *old_mailbox;
@@ -676,24 +862,24 @@ mn_mailbox_new_async_thread (gpointer data)
return NULL;
}}
-#line 680 "mn-mailbox.c"
+#line 866 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
void
mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...)
-#line 686 "mn-mailbox.c"
+#line 872 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::set_init_error"
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 311 "mn-mailbox.gob"
+#line 366 "mn-mailbox.gob"
g_return_if_fail (format != NULL);
-#line 695 "mn-mailbox.c"
+#line 881 "mn-mailbox.c"
{
-#line 313 "mn-mailbox.gob"
+#line 368 "mn-mailbox.gob"
va_list args;
@@ -703,24 +889,24 @@ mn_mailbox_set_init_error (MNMailbox * self, const char * format, ...)
selfp->init_error = g_strdup_vprintf(format, args);
va_end(args);
}}
-#line 707 "mn-mailbox.c"
+#line 893 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
void
mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType monitor_type, MNMailboxMonitorEventType events)
-#line 713 "mn-mailbox.c"
+#line 899 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::monitor"
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 323 "mn-mailbox.gob"
+#line 378 "mn-mailbox.gob"
g_return_if_fail (uri != NULL);
-#line 722 "mn-mailbox.c"
+#line 908 "mn-mailbox.c"
{
-#line 328 "mn-mailbox.gob"
+#line 383 "mn-mailbox.gob"
GnomeVFSResult result;
@@ -746,79 +932,84 @@ mn_mailbox_monitor (MNMailbox * self, const char * uri, GnomeVFSMonitorType moni
}
else
{
- static gboolean first_time = TRUE;
+ g_warning(_("unable to enable immediate notification for %s: %s"), uri, gnome_vfs_result_to_string(result));
- g_warning(_("unable to monitor %s: %s"), uri, gnome_vfs_result_to_string(result));
-
- if (first_time)
+ if (! eel_gconf_get_boolean(MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW))
{
- int minutes;
- int seconds;
- char *str;
+ static gboolean first_time = TRUE;
- first_time = FALSE;
+ if (first_time)
+ {
+ int minutes;
+ int seconds;
+ char *str;
- minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
- seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+ first_time = FALSE;
- if (minutes == 0)
- str = g_strdup_printf(ngettext("As a fallback, they will be "
- "checked every %i second (this "
- "delay is configurable from the "
- "Properties Dialog).",
- "As a fallback, they will be "
- "checked every %i seconds (this "
- "delay is configurable from the "
- "Properties Dialog).",
+ minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
+ seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+
+ if (minutes == 0)
+ str = g_strdup_printf(ngettext("As a fallback, they will be "
+ "checked every %i second (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
+ "As a fallback, they will be "
+ "checked every %i seconds (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
seconds),
- seconds);
- else if (seconds == 0)
- str = g_strdup_printf(ngettext("As a fallback, they will be "
- "checked every %i minute (this "
- "delay is configurable from the "
- "Properties Dialog).",
- "As a fallback, they will be "
- "checked every %i minutes (this "
- "delay is configurable from the "
- "Properties Dialog).",
- minutes),
- minutes);
- else
- str = g_strdup_printf(ngettext("As a fallback, they will be "
- "checked approximately every %i "
- "minute (this delay is "
- "configurable from the "
- "Properties Dialog).",
- "As a fallback, they will be "
- "checked approximately every %i "
- "minutes (this delay is "
- "configurable from the "
- "Properties Dialog).",
- minutes),
- minutes);
-
- mn_error_dialog("immediate-notification",
- _("A monitoring error has occurred"),
- _("Mail Notification was unable to enable immediate "
- "notification for one or more mailboxes. %s"), str);
- g_free(str);
+ seconds);
+ else if (seconds == 0)
+ str = g_strdup_printf(ngettext("As a fallback, they will be "
+ "checked every %i minute (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
+ "As a fallback, they will be "
+ "checked every %i minutes (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
+ minutes),
+ minutes);
+ else
+ str = g_strdup_printf(ngettext("As a fallback, they will be "
+ "checked approximately every %i "
+ "minute (this delay is "
+ "configurable from the "
+ "Properties Dialog).",
+ "As a fallback, they will be "
+ "checked approximately every %i "
+ "minutes (this delay is "
+ "configurable from the "
+ "Properties Dialog).",
+ minutes),
+ minutes);
+
+ mn_error_dialog(NULL,
+ MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW,
+ "immediate-notification",
+ _("A monitoring error has occurred"),
+ _("Mail Notification was unable to enable immediate "
+ "notification for one or more mailboxes. %s"), str);
+ g_free(str);
+ }
}
}
}}
-#line 809 "mn-mailbox.c"
+#line 1000 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 413 "mn-mailbox.gob"
+#line 473 "mn-mailbox.gob"
static void
mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri, const char * info_uri, GnomeVFSMonitorEventType event_type, gpointer user_data)
-#line 815 "mn-mailbox.c"
+#line 1006 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::monitor_cb"
-#line 413 "mn-mailbox.gob"
+#line 473 "mn-mailbox.gob"
g_return_if_fail (user_data != NULL);
-#line 820 "mn-mailbox.c"
+#line 1011 "mn-mailbox.c"
{
-#line 419 "mn-mailbox.gob"
+#line 479 "mn-mailbox.gob"
Self *self = user_data;
@@ -827,20 +1018,20 @@ mn_mailbox_monitor_cb (GnomeVFSMonitorHandle * handle, const char * monitor_uri,
self_check(self);
GDK_THREADS_LEAVE();
}}
-#line 831 "mn-mailbox.c"
+#line 1022 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 428 "mn-mailbox.gob"
+#line 488 "mn-mailbox.gob"
static gboolean
mn_mailbox_impl_is (MNMailbox * self, MNURI * uri)
-#line 837 "mn-mailbox.c"
+#line 1028 "mn-mailbox.c"
{
MNMailboxClass *klass;
-#line 428 "mn-mailbox.gob"
+#line 488 "mn-mailbox.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 428 "mn-mailbox.gob"
+#line 488 "mn-mailbox.gob"
g_return_val_if_fail (MN_IS_MAILBOX (self), (gboolean )0);
-#line 844 "mn-mailbox.c"
+#line 1035 "mn-mailbox.c"
klass = MN_MAILBOX_GET_CLASS(self);
if(klass->impl_is)
@@ -849,53 +1040,53 @@ mn_mailbox_impl_is (MNMailbox * self, MNURI * uri)
return (gboolean )(0);
}
-#line 430 "mn-mailbox.gob"
+#line 490 "mn-mailbox.gob"
static void
mn_mailbox_impl_check (MNMailbox * self)
-#line 856 "mn-mailbox.c"
+#line 1047 "mn-mailbox.c"
{
MNMailboxClass *klass;
-#line 430 "mn-mailbox.gob"
+#line 490 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 430 "mn-mailbox.gob"
+#line 490 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 863 "mn-mailbox.c"
+#line 1054 "mn-mailbox.c"
klass = MN_MAILBOX_GET_CLASS(self);
if(klass->impl_check)
(*klass->impl_check)(self);
}
-#line 432 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
static void
mn_mailbox_impl_threaded_check (MNMailbox * self)
-#line 873 "mn-mailbox.c"
+#line 1064 "mn-mailbox.c"
{
MNMailboxClass *klass;
-#line 432 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 432 "mn-mailbox.gob"
+#line 492 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 880 "mn-mailbox.c"
+#line 1071 "mn-mailbox.c"
klass = MN_MAILBOX_GET_CLASS(self);
if(klass->impl_threaded_check)
(*klass->impl_threaded_check)(self);
}
-#line 435 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
void
mn_mailbox_check (MNMailbox * self)
-#line 890 "mn-mailbox.c"
+#line 1081 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::check"
-#line 435 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 435 "mn-mailbox.gob"
+#line 495 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 897 "mn-mailbox.c"
+#line 1088 "mn-mailbox.c"
{
-#line 437 "mn-mailbox.gob"
+#line 497 "mn-mailbox.gob"
g_return_if_fail(MN_MAILBOX_CAN_CHECK(self));
@@ -911,46 +1102,46 @@ mn_mailbox_check (MNMailbox * self)
SELF_GET_CLASS(self)->impl_check(self);
}
}}
-#line 915 "mn-mailbox.c"
+#line 1106 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 453 "mn-mailbox.gob"
+#line 513 "mn-mailbox.gob"
void
mn_mailbox_end_check (MNMailbox * self)
-#line 921 "mn-mailbox.c"
+#line 1112 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::end_check"
-#line 453 "mn-mailbox.gob"
+#line 513 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 453 "mn-mailbox.gob"
+#line 513 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 928 "mn-mailbox.c"
+#line 1119 "mn-mailbox.c"
{
-#line 455 "mn-mailbox.gob"
+#line 515 "mn-mailbox.gob"
g_return_if_fail(selfp->checking == TRUE);
selfp->checking = FALSE;
g_object_unref(self);
}}
-#line 937 "mn-mailbox.c"
+#line 1128 "mn-mailbox.c"
#undef __GOB_FUNCTION__
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
void
mn_mailbox_notice (MNMailbox * self, const char * format, ...)
-#line 943 "mn-mailbox.c"
+#line 1134 "mn-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Mailbox::notice"
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 462 "mn-mailbox.gob"
+#line 522 "mn-mailbox.gob"
g_return_if_fail (format != NULL);
-#line 952 "mn-mailbox.c"
+#line 1143 "mn-mailbox.c"
{
-#line 464 "mn-mailbox.gob"
+#line 524 "mn-mailbox.gob"
va_list args;
char *notice;
@@ -966,5 +1157,5 @@ mn_mailbox_notice (MNMailbox * self, const char * format, ...)
mn_info("%s", prefixed_notice);
g_free(prefixed_notice);
}}
-#line 970 "mn-mailbox.c"
+#line 1161 "mn-mailbox.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-mailbox.gob b/src/mn-mailbox.gob
@@ -16,8 +16,12 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
+#include "config.h"
#include <stdarg.h>
+#include "mn-message.h"
#include "mn-uri.h"
%}
@@ -36,9 +40,14 @@
%}
%h{
+#define MN_MAILBOX_N_TYPES 7
+ extern GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
+
#define MN_MAILBOX_CAN_CHECK(self) \
(MN_MAILBOX_GET_CLASS((self))->impl_check != NULL \
|| MN_MAILBOX_GET_CLASS((self))->impl_threaded_check != NULL)
+#define MN_MAILBOX_MUST_POLL(self) \
+ (MN_MAILBOX_CAN_CHECK((self)) && ! mn_mailbox_get_automatic((self)))
%}
%{
@@ -77,6 +86,8 @@ typedef struct
gpointer user_data);
gpointer user_data;
} NewInfo;
+
+ GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
%}
/******************************************************************************
@@ -143,6 +154,60 @@ class MN:Mailbox from G:Object
link,
export);
+ private GSList *messages destroywith mn_g_object_slist_free;
+ property POINTER messages (blurb = _("The list of new and unread MNMessage objects"),
+ export)
+ set
+ {
+ GSList *messages;
+ GSList *l;
+ gboolean changed = FALSE;
+ gboolean has_new = FALSE;
+
+ messages = g_value_get_pointer(VAL);
+
+ MN_LIST_FOREACH(l, selfp->messages)
+ if (! mn_message_slist_find_by_id(messages, l->data))
+ {
+ changed = TRUE;
+ break;
+ }
+
+ MN_LIST_FOREACH(l, messages)
+ if (! mn_message_slist_find_by_id(selfp->messages, l->data))
+ {
+ changed = TRUE;
+ has_new = TRUE;
+ break;
+ }
+
+ mn_g_object_slist_free(selfp->messages);
+ selfp->messages = mn_g_object_slist_copy(messages);
+
+ if (changed)
+ self_messages_changed(self, has_new);
+ }
+ get
+ {
+ g_value_set_pointer(VAL, selfp->messages);
+ };
+
+ /**
+ * messages-changed:
+ * @self: the object which received the signal
+ * @has_new: whether a new message has been received or not
+ *
+ * This signal gets emitted whenever the messages property changes.
+ *
+ * It is considered that the property changes if a new message
+ * appears or if an old message disappears. If an existing message
+ * changes while keeping the same id, this signal is not emitted
+ * (use the "notify::messages" signal if you need notification of
+ * such events).
+ **/
+ signal private NONE (BOOLEAN)
+ void messages_changed (self, gboolean has_new);
+
private char *error destroywith g_free;
property STRING error (blurb = _("The mailbox error, if any"), link);
protected void
@@ -163,57 +228,51 @@ class MN:Mailbox from G:Object
}
public const char *get_error (self) { return selfp->error; }
- private GnomeVFSMonitorHandle *monitor_handle destroywith gnome_vfs_monitor_cancel;
+ private GnomeVFSMonitorHandle *monitor_handle;
private char *monitor_uri destroywith g_free;
private MNMailboxMonitorEventType monitor_events;
private gboolean checking;
- public const GType *
- get_types (void)
+ class_init (class)
{
- static GType *types = NULL;
- G_LOCK_DEFINE_STATIC(types);
-
- G_LOCK(types);
- if (! types)
- {
- GType tmp_types[7];
- int n_types = 0;
- int i;
-
+ int i = 0;
+
#ifdef WITH_MBOX
- tmp_types[n_types++] = MN_TYPE_MBOX_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_MBOX_MAILBOX;
#endif
#ifdef WITH_MH
- tmp_types[n_types++] = MN_TYPE_MH_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_MH_MAILBOX;
#endif
#ifdef WITH_MAILDIR
- tmp_types[n_types++] = MN_TYPE_MAILDIR_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_MAILDIR_MAILBOX;
#endif
#ifdef WITH_POP3
- tmp_types[n_types++] = MN_TYPE_POP3_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_POP3_MAILBOX;
#endif
#ifdef WITH_IMAP
- tmp_types[n_types++] = MN_TYPE_IMAP_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_IMAP_MAILBOX;
#endif
#ifdef WITH_SYLPHEED
- tmp_types[n_types++] = MN_TYPE_SYLPHEED_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_SYLPHEED_MAILBOX;
#endif
#ifdef WITH_GMAIL
- tmp_types[n_types++] = MN_TYPE_GMAIL_MAILBOX;
+ mn_mailbox_types[i++] = MN_TYPE_GMAIL_MAILBOX;
#endif
-
- types = g_new(GType, n_types + 1);
- for (i = 0; i < n_types; i++)
- types[i] = tmp_types[i];
- types[n_types] = 0;
- }
- G_UNLOCK(types);
-
- return types;
+ mn_mailbox_types[i] = 0;
}
+
+ override (G:Object) void
+ finalize (G:Object *object (check null type))
+ {
+ Self *self = SELF(object);
+ if (selfp->monitor_handle)
+ gnome_vfs_monitor_cancel(selfp->monitor_handle);
+
+ PARENT_HANDLER(object);
+ }
+
/**
* new_async:
* @uri: location of the mailbox
@@ -253,22 +312,18 @@ class MN:Mailbox from G:Object
if (! mailbox)
{
- const GType *types;
int i;
- types = self_get_types();
- for (i = 0; types[i]; i++)
+ for (i = 0; mn_mailbox_types[i]; i++)
{
SelfClass *class;
- gboolean is;
- class = g_type_class_ref(types[i]);
- is = class->impl_is(NULL, info->uri);
- g_type_class_unref(class);
+ class = g_type_class_peek(mn_mailbox_types[i]);
+ g_return_val_if_fail(class != NULL, NULL);
- if (is)
+ if (class->impl_is(NULL, info->uri))
{
- mailbox = g_object_new(types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
+ mailbox = g_object_new(mn_mailbox_types[i], MN_MAILBOX_PROP_URI(G_OBJECT(info->uri)), NULL);
if (mailbox->_priv->init_error)
{
MNMailbox *old_mailbox;
@@ -350,62 +405,67 @@ class MN:Mailbox from G:Object
}
else
{
- static gboolean first_time = TRUE;
+ g_warning(_("unable to enable immediate notification for %s: %s"), uri, gnome_vfs_result_to_string(result));
- g_warning(_("unable to monitor %s: %s"), uri, gnome_vfs_result_to_string(result));
-
- if (first_time)
+ if (! eel_gconf_get_boolean(MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW))
{
- int minutes;
- int seconds;
- char *str;
+ static gboolean first_time = TRUE;
- first_time = FALSE;
+ if (first_time)
+ {
+ int minutes;
+ int seconds;
+ char *str;
- minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
- seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+ first_time = FALSE;
- if (minutes == 0)
- str = g_strdup_printf(ngettext("As a fallback, they will be "
- "checked every %i second (this "
- "delay is configurable from the "
- "Properties Dialog).",
- "As a fallback, they will be "
- "checked every %i seconds (this "
- "delay is configurable from the "
- "Properties Dialog).",
+ minutes = eel_gconf_get_integer(MN_CONF_DELAY_MINUTES);
+ seconds = eel_gconf_get_integer(MN_CONF_DELAY_SECONDS);
+
+ if (minutes == 0)
+ str = g_strdup_printf(ngettext("As a fallback, they will be "
+ "checked every %i second (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
+ "As a fallback, they will be "
+ "checked every %i seconds (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
seconds),
- seconds);
- else if (seconds == 0)
- str = g_strdup_printf(ngettext("As a fallback, they will be "
- "checked every %i minute (this "
- "delay is configurable from the "
- "Properties Dialog).",
- "As a fallback, they will be "
- "checked every %i minutes (this "
- "delay is configurable from the "
- "Properties Dialog).",
- minutes),
- minutes);
- else
- str = g_strdup_printf(ngettext("As a fallback, they will be "
- "checked approximately every %i "
- "minute (this delay is "
- "configurable from the "
- "Properties Dialog).",
- "As a fallback, they will be "
- "checked approximately every %i "
- "minutes (this delay is "
- "configurable from the "
- "Properties Dialog).",
- minutes),
- minutes);
-
- mn_error_dialog("immediate-notification",
- _("A monitoring error has occurred"),
- _("Mail Notification was unable to enable immediate "
- "notification for one or more mailboxes. %s"), str);
- g_free(str);
+ seconds);
+ else if (seconds == 0)
+ str = g_strdup_printf(ngettext("As a fallback, they will be "
+ "checked every %i minute (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
+ "As a fallback, they will be "
+ "checked every %i minutes (this "
+ "delay is configurable from the "
+ "Properties Dialog).",
+ minutes),
+ minutes);
+ else
+ str = g_strdup_printf(ngettext("As a fallback, they will be "
+ "checked approximately every %i "
+ "minute (this delay is "
+ "configurable from the "
+ "Properties Dialog).",
+ "As a fallback, they will be "
+ "checked approximately every %i "
+ "minutes (this delay is "
+ "configurable from the "
+ "Properties Dialog).",
+ minutes),
+ minutes);
+
+ mn_error_dialog(NULL,
+ MN_CONF_IMMEDIATE_NOTIFICATION_ERROR_DIALOG_DO_NOT_SHOW,
+ "immediate-notification",
+ _("A monitoring error has occurred"),
+ _("Mail Notification was unable to enable immediate "
+ "notification for one or more mailboxes. %s"), str);
+ g_free(str);
+ }
}
}
}
diff --git a/src/mn-mailbox.h b/src/mn-mailbox.h
@@ -1,10 +1,12 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
+#include "config.h"
#include <stdarg.h>
+#include "mn-message.h"
#include "mn-uri.h"
#ifndef __MN_MAILBOX_H__
@@ -16,9 +18,14 @@ extern "C" {
+#define MN_MAILBOX_N_TYPES 7
+ extern GType mn_mailbox_types[MN_MAILBOX_N_TYPES + 1];
+
#define MN_MAILBOX_CAN_CHECK(self) \
(MN_MAILBOX_GET_CLASS((self))->impl_check != NULL \
|| MN_MAILBOX_GET_CLASS((self))->impl_threaded_check != NULL)
+#define MN_MAILBOX_MUST_POLL(self) \
+ (MN_MAILBOX_CAN_CHECK((self)) && ! mn_mailbox_get_automatic((self)))
/*
@@ -56,6 +63,7 @@ struct _MNMailbox {
typedef struct _MNMailboxClass MNMailboxClass;
struct _MNMailboxClass {
GObjectClass __parent__;
+ /*signal*/void (* messages_changed) (MNMailbox * self, gboolean has_new);
gboolean (* impl_is) (MNMailbox * self, MNURI * uri);
void (* impl_check) (MNMailbox * self);
void (* impl_threaded_check) (MNMailbox * self);
@@ -75,14 +83,30 @@ void mn_mailbox_set_automatic (MNMailbox * self,
gboolean mn_mailbox_get_has_new (MNMailbox * self);
void mn_mailbox_set_has_new (MNMailbox * self,
gboolean val);
+gpointer mn_mailbox_get_messages (MNMailbox * self);
+void mn_mailbox_set_messages (MNMailbox * self,
+ gpointer val);
const char * mn_mailbox_get_error (MNMailbox * self);
-const GType * mn_mailbox_get_types (void);
void mn_mailbox_new_async (MNURI * uri,
gpointer callback,
gpointer user_data);
void mn_mailbox_check (MNMailbox * self);
/*
+ * Signal connection wrapper macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define mn_mailbox_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailbox_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(__extension__ ({MNMailbox *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailbox * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define mn_mailbox_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailbox_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailbox_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOX(object),"messages_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+/*
* Argument wrapping macros
*/
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
@@ -93,6 +117,8 @@ void mn_mailbox_check (MNMailbox * self);
#define MN_MAILBOX_GET_PROP_AUTOMATIC(arg) "automatic", __extension__ ({gboolean *z = (arg); z;})
#define MN_MAILBOX_PROP_HAS_NEW(arg) "has_new", __extension__ ({gboolean z = (arg); z;})
#define MN_MAILBOX_GET_PROP_HAS_NEW(arg) "has_new", __extension__ ({gboolean *z = (arg); z;})
+#define MN_MAILBOX_PROP_MESSAGES(arg) "messages", __extension__ ({gpointer z = (arg); z;})
+#define MN_MAILBOX_GET_PROP_MESSAGES(arg) "messages", __extension__ ({gpointer *z = (arg); z;})
#define MN_MAILBOX_PROP_ERROR(arg) "error", __extension__ ({gchar *z = (arg); z;})
#define MN_MAILBOX_GET_PROP_ERROR(arg) "error", __extension__ ({gchar **z = (arg); z;})
#else /* __GNUC__ && !__STRICT_ANSI__ */
@@ -103,6 +129,8 @@ void mn_mailbox_check (MNMailbox * self);
#define MN_MAILBOX_GET_PROP_AUTOMATIC(arg) "automatic",(gboolean *)(arg)
#define MN_MAILBOX_PROP_HAS_NEW(arg) "has_new",(gboolean )(arg)
#define MN_MAILBOX_GET_PROP_HAS_NEW(arg) "has_new",(gboolean *)(arg)
+#define MN_MAILBOX_PROP_MESSAGES(arg) "messages",(gpointer )(arg)
+#define MN_MAILBOX_GET_PROP_MESSAGES(arg) "messages",(gpointer *)(arg)
#define MN_MAILBOX_PROP_ERROR(arg) "error",(gchar *)(arg)
#define MN_MAILBOX_GET_PROP_ERROR(arg) "error",(gchar **)(arg)
#endif /* __GNUC__ && !__STRICT_ANSI__ */
diff --git a/src/mn-mailboxes-private.h b/src/mn-mailboxes-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MAILBOXES_PRIVATE_H__
#define __MN_MAILBOXES_PRIVATE_H__
@@ -10,11 +10,11 @@ extern "C" {
#endif /* __cplusplus */
struct _MNMailboxesPrivate {
-#line 34 "mn-mailboxes.gob"
+#line 36 "mn-mailboxes.gob"
GSList * list;
-#line 35 "mn-mailboxes.gob"
- unsigned int timeout_id;
#line 37 "mn-mailboxes.gob"
+ unsigned int timeout_id;
+#line 38 "mn-mailboxes.gob"
unsigned int delay_notification_id;
#line 39 "mn-mailboxes.gob"
unsigned int mailboxes_notification_id;
diff --git a/src/mn-mailboxes.c b/src/mn-mailboxes.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -23,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-mailboxes.gob"
+#line 24 "mn-mailboxes.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -48,15 +48,25 @@ typedef MNMailboxes Self;
typedef MNMailboxesClass SelfClass;
/* here are local prototypes */
+static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
static void mn_mailboxes_class_init (MNMailboxesClass * c) G_GNUC_UNUSED;
+static void mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void mn_mailboxes_mailbox_changed (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___real_mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox);
+static void mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___real_mn_mailboxes_list_changed (MNMailboxes * self);
static void mn_mailboxes_list_changed (MNMailboxes * self) G_GNUC_UNUSED;
-static void mn_mailboxes_status_changed (MNMailboxes * self) G_GNUC_UNUSED;
+static void mn_mailboxes_has_new_changed (MNMailboxes * self) G_GNUC_UNUSED;
+static void mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new) G_GNUC_UNUSED;
+static void mn_mailboxes_error_changed (MNMailboxes * self) G_GNUC_UNUSED;
static void mn_mailboxes_init (MNMailboxes * self) G_GNUC_UNUSED;
+static void ___a_mn_mailboxes_finalize (GObject * object) G_GNUC_UNUSED;
static void mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
static void mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
static void mn_mailboxes_update_from_conf (MNMailboxes * self) G_GNUC_UNUSED;
static void mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data) G_GNUC_UNUSED;
static void mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
+static void mn_mailboxes_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data) G_GNUC_UNUSED;
static void mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data) G_GNUC_UNUSED;
static void mn_mailboxes_install_timeout (MNMailboxes * self) G_GNUC_UNUSED;
static gboolean mn_mailboxes_timeout_cb (gpointer data) G_GNUC_UNUSED;
@@ -66,44 +76,140 @@ static int mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b
/*
* Signal connection wrapper macro shortcuts
*/
+#define self_connect__mailbox_added(object,func,data) mn_mailboxes_connect__mailbox_added((object),(func),(data))
+#define self_connect_after__mailbox_added(object,func,data) mn_mailboxes_connect_after__mailbox_added((object),(func),(data))
+#define self_connect_data__mailbox_added(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__mailbox_added((object),(func),(data),(destroy_data),(flags))
+#define self_connect__mailbox_changed(object,func,data) mn_mailboxes_connect__mailbox_changed((object),(func),(data))
+#define self_connect_after__mailbox_changed(object,func,data) mn_mailboxes_connect_after__mailbox_changed((object),(func),(data))
+#define self_connect_data__mailbox_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__mailbox_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__mailbox_removed(object,func,data) mn_mailboxes_connect__mailbox_removed((object),(func),(data))
+#define self_connect_after__mailbox_removed(object,func,data) mn_mailboxes_connect_after__mailbox_removed((object),(func),(data))
+#define self_connect_data__mailbox_removed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__mailbox_removed((object),(func),(data),(destroy_data),(flags))
#define self_connect__list_changed(object,func,data) mn_mailboxes_connect__list_changed((object),(func),(data))
#define self_connect_after__list_changed(object,func,data) mn_mailboxes_connect_after__list_changed((object),(func),(data))
#define self_connect_data__list_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__list_changed((object),(func),(data),(destroy_data),(flags))
-#define self_connect__status_changed(object,func,data) mn_mailboxes_connect__status_changed((object),(func),(data))
-#define self_connect_after__status_changed(object,func,data) mn_mailboxes_connect_after__status_changed((object),(func),(data))
-#define self_connect_data__status_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__status_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__has_new_changed(object,func,data) mn_mailboxes_connect__has_new_changed((object),(func),(data))
+#define self_connect_after__has_new_changed(object,func,data) mn_mailboxes_connect_after__has_new_changed((object),(func),(data))
+#define self_connect_data__has_new_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__has_new_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__messages_changed(object,func,data) mn_mailboxes_connect__messages_changed((object),(func),(data))
+#define self_connect_after__messages_changed(object,func,data) mn_mailboxes_connect_after__messages_changed((object),(func),(data))
+#define self_connect_data__messages_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__messages_changed((object),(func),(data),(destroy_data),(flags))
+#define self_connect__error_changed(object,func,data) mn_mailboxes_connect__error_changed((object),(func),(data))
+#define self_connect_after__error_changed(object,func,data) mn_mailboxes_connect_after__error_changed((object),(func),(data))
+#define self_connect_data__error_changed(object,func,data,destroy_data,flags) mn_mailboxes_connect_data__error_changed((object),(func),(data),(destroy_data),(flags))
+
+typedef void (*___Sig1) (MNMailboxes *, GObject *, gpointer);
+
+static void
+___marshal_Sig1 (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ register ___Sig1 callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure)) {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ } else {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+
+ callback = (___Sig1) (marshal_data != NULL ? marshal_data : cc->callback);
+
+ callback ((MNMailboxes *)data1,
+ (GObject *) g_value_get_object (param_values + 1),
+ data2);
+}
+
+
+typedef void (*___Sig2) (MNMailboxes *, gboolean , gpointer);
+
+static void
+___marshal_Sig2 (GClosure *closure,
+ GValue *return_value G_GNUC_UNUSED,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint G_GNUC_UNUSED,
+ gpointer marshal_data)
+{
+ register ___Sig2 callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 2);
+
+ if (G_CCLOSURE_SWAP_DATA (closure)) {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ } else {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+
+ callback = (___Sig2) (marshal_data != NULL ? marshal_data : cc->callback);
+
+ callback ((MNMailboxes *)data1,
+ (gboolean ) g_value_get_boolean (param_values + 1),
+ data2);
+}
+
enum {
+ MAILBOX_ADDED_SIGNAL,
+ MAILBOX_CHANGED_SIGNAL,
+ MAILBOX_REMOVED_SIGNAL,
LIST_CHANGED_SIGNAL,
- STATUS_CHANGED_SIGNAL,
+ HAS_NEW_CHANGED_SIGNAL,
+ MESSAGES_CHANGED_SIGNAL,
+ ERROR_CHANGED_SIGNAL,
LAST_SIGNAL
};
+enum {
+ PROP_0,
+ PROP_MUST_POLL
+};
+
static guint object_signals[LAST_SIGNAL] = {0};
/* pointer to the class of our parent */
static GObjectClass *parent_class = NULL;
/* Short form macros */
+#define self_mailbox_added mn_mailboxes_mailbox_added
+#define self_mailbox_changed mn_mailboxes_mailbox_changed
+#define self_mailbox_removed mn_mailboxes_mailbox_removed
#define self_list_changed mn_mailboxes_list_changed
-#define self_status_changed mn_mailboxes_status_changed
+#define self_has_new_changed mn_mailboxes_has_new_changed
+#define self_messages_changed mn_mailboxes_messages_changed
+#define self_error_changed mn_mailboxes_error_changed
+#define self_get_must_poll mn_mailboxes_get_must_poll
#define self_notify_delay_cb mn_mailboxes_notify_delay_cb
#define self_notify_mailboxes_cb mn_mailboxes_notify_mailboxes_cb
#define self_update_from_conf mn_mailboxes_update_from_conf
#define self_new_cb mn_mailboxes_new_cb
#define self_notify_has_new_h mn_mailboxes_notify_has_new_h
+#define self_messages_changed_h mn_mailboxes_messages_changed_h
#define self_notify_error_h mn_mailboxes_notify_error_h
#define self_install_timeout mn_mailboxes_install_timeout
#define self_timeout_cb mn_mailboxes_timeout_cb
#define self_check mn_mailboxes_check
#define self_get mn_mailboxes_get
+#define self_get_messages mn_mailboxes_get_messages
#define self_find mn_mailboxes_find
#define self_find_uri mn_mailboxes_find_uri
#define self_find_compare_func mn_mailboxes_find_compare_func
#define self_conf_find mn_mailboxes_conf_find
#define self_conf_find_uri mn_mailboxes_conf_find_uri
#define self_conf_find_compare_func mn_mailboxes_conf_find_compare_func
-#define self_has_manual mn_mailboxes_has_manual
#define self_new mn_mailboxes_new
GType
mn_mailboxes_get_type (void)
@@ -152,41 +258,14 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
- MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
- gpointer priv = self->_priv;
- if(G_OBJECT_CLASS(parent_class)->finalize) \
- (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 34 "mn-mailboxes.gob"
- if(self->_priv->list) { ((*(void (*)(void *))mn_g_object_slist_free)) (self->_priv->list); self->_priv->list = NULL; }
-#line 162 "mn-mailboxes.c"
-#define timeout_id (self->_priv->timeout_id)
-#define VAR timeout_id
- {
+ MNMailboxes *self G_GNUC_UNUSED = MN_MAILBOXES (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 159 "mn-mailboxes.gob"
+ ___a_mn_mailboxes_finalize(obj_self);
+#line 266 "mn-mailboxes.c"
#line 36 "mn-mailboxes.gob"
- if (VAR) g_source_remove(VAR); }
-#line 168 "mn-mailboxes.c"
- memset(&timeout_id, 0, sizeof(timeout_id));
-#undef VAR
-#undef timeout_id
-#define delay_notification_id (self->_priv->delay_notification_id)
-#define VAR delay_notification_id
- {
-#line 38 "mn-mailboxes.gob"
- eel_gconf_notification_remove(VAR); }
-#line 177 "mn-mailboxes.c"
- memset(&delay_notification_id, 0, sizeof(delay_notification_id));
-#undef VAR
-#undef delay_notification_id
-#define mailboxes_notification_id (self->_priv->mailboxes_notification_id)
-#define VAR mailboxes_notification_id
- {
-#line 40 "mn-mailboxes.gob"
- eel_gconf_notification_remove(VAR); }
-#line 186 "mn-mailboxes.c"
- memset(&mailboxes_notification_id, 0, sizeof(mailboxes_notification_id));
-#undef VAR
-#undef mailboxes_notification_id
- g_free (priv);
+ if(self->_priv->list) { mn_g_object_slist_free ((gpointer) self->_priv->list); self->_priv->list = NULL; }
+#line 269 "mn-mailboxes.c"
}
#undef __GOB_FUNCTION__
@@ -196,39 +275,121 @@ mn_mailboxes_class_init (MNMailboxesClass * c G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:Mailboxes::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ g_type_class_add_private(c,sizeof(MNMailboxesPrivate));
+
parent_class = g_type_class_ref (G_TYPE_OBJECT);
+ object_signals[MAILBOX_ADDED_SIGNAL] =
+ g_signal_new ("mailbox_added",
+ G_TYPE_FROM_CLASS (g_object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ G_STRUCT_OFFSET (MNMailboxesClass, mailbox_added),
+ NULL, NULL,
+ ___marshal_Sig1,
+ G_TYPE_NONE, 1,
+ G_TYPE_OBJECT);
+ if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
+ g_error("mn-mailboxes.gob line 48: Type mismatch of \"mailbox_added\" signal signature");
+ }
+ object_signals[MAILBOX_CHANGED_SIGNAL] =
+ g_signal_new ("mailbox_changed",
+ G_TYPE_FROM_CLASS (g_object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ G_STRUCT_OFFSET (MNMailboxesClass, mailbox_changed),
+ NULL, NULL,
+ ___marshal_Sig1,
+ G_TYPE_NONE, 1,
+ G_TYPE_OBJECT);
+ if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
+ g_error("mn-mailboxes.gob line 58: Type mismatch of \"mailbox_changed\" signal signature");
+ }
+ object_signals[MAILBOX_REMOVED_SIGNAL] =
+ g_signal_new ("mailbox_removed",
+ G_TYPE_FROM_CLASS (g_object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST),
+ G_STRUCT_OFFSET (MNMailboxesClass, mailbox_removed),
+ NULL, NULL,
+ ___marshal_Sig1,
+ G_TYPE_NONE, 1,
+ G_TYPE_OBJECT);
+ if ___GOB_UNLIKELY(sizeof(MNMailbox * ) != sizeof(GObject *) || parent_class == NULL /* avoid warning */) {
+ g_error("mn-mailboxes.gob line 69: Type mismatch of \"mailbox_removed\" signal signature");
+ }
object_signals[LIST_CHANGED_SIGNAL] =
g_signal_new ("list_changed",
G_TYPE_FROM_CLASS (g_object_class),
- (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ (GSignalFlags)(G_SIGNAL_RUN_FIRST),
G_STRUCT_OFFSET (MNMailboxesClass, list_changed),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- object_signals[STATUS_CHANGED_SIGNAL] =
- g_signal_new ("status_changed",
+ object_signals[HAS_NEW_CHANGED_SIGNAL] =
+ g_signal_new ("has_new_changed",
G_TYPE_FROM_CLASS (g_object_class),
(GSignalFlags)(G_SIGNAL_RUN_LAST),
- G_STRUCT_OFFSET (MNMailboxesClass, status_changed),
+ G_STRUCT_OFFSET (MNMailboxesClass, has_new_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+ object_signals[MESSAGES_CHANGED_SIGNAL] =
+ g_signal_new ("messages_changed",
+ G_TYPE_FROM_CLASS (g_object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ G_STRUCT_OFFSET (MNMailboxesClass, messages_changed),
+ NULL, NULL,
+ ___marshal_Sig2,
+ G_TYPE_NONE, 1,
+ G_TYPE_BOOLEAN);
+ if ___GOB_UNLIKELY(sizeof(gboolean ) != sizeof(gboolean ) || parent_class == NULL /* avoid warning */) {
+ g_error("mn-mailboxes.gob line 118: Type mismatch of \"messages_changed\" signal signature");
+ }
+ object_signals[ERROR_CHANGED_SIGNAL] =
+ g_signal_new ("error_changed",
+ G_TYPE_FROM_CLASS (g_object_class),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ G_STRUCT_OFFSET (MNMailboxesClass, error_changed),
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- c->list_changed = NULL;
- c->status_changed = NULL;
+ c->mailbox_added = NULL;
+ c->mailbox_changed = NULL;
+#line 69 "mn-mailboxes.gob"
+ c->mailbox_removed = ___real_mn_mailboxes_mailbox_removed;
+#line 86 "mn-mailboxes.gob"
+ c->list_changed = ___real_mn_mailboxes_list_changed;
+#line 362 "mn-mailboxes.c"
+ c->has_new_changed = NULL;
+ c->messages_changed = NULL;
+ c->error_changed = NULL;
+#line 159 "mn-mailboxes.gob"
g_object_class->finalize = ___finalize;
+#line 368 "mn-mailboxes.c"
+ g_object_class->get_property = ___object_get_property;
+ {
+ GParamSpec *param_spec;
+
+ param_spec = g_param_spec_boolean
+ ("must_poll" /* name */,
+ NULL /* nick */,
+ _("Whether one or more of the mailboxes has to be polled") /* blurb */,
+ FALSE /* default_value */,
+ (GParamFlags)(G_PARAM_READABLE));
+ g_object_class_install_property (g_object_class,
+ PROP_MUST_POLL,
+ param_spec);
+ }
}
#undef __GOB_FUNCTION__
-#line 47 "mn-mailboxes.gob"
+#line 150 "mn-mailboxes.gob"
static void
mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
-#line 227 "mn-mailboxes.c"
+#line 388 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::init"
- self->_priv = g_new0 (MNMailboxesPrivate, 1);
+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNMailboxesPrivate);
{
-#line 48 "mn-mailboxes.gob"
+#line 151 "mn-mailboxes.gob"
self_update_from_conf(self);
self_install_timeout(self);
@@ -236,16 +397,189 @@ mn_mailboxes_init (MNMailboxes * self G_GNUC_UNUSED)
selfp->delay_notification_id = eel_gconf_notification_add(MN_CONF_DELAY_NAMESPACE, self_notify_delay_cb, self);
selfp->mailboxes_notification_id = eel_gconf_notification_add(MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
-#line 240 "mn-mailboxes.c"
+#line 401 "mn-mailboxes.c"
}
}
#undef __GOB_FUNCTION__
+static void
+___object_get_property (GObject *object,
+ guint property_id,
+ GValue *VAL G_GNUC_UNUSED,
+ GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Mailboxes::get_property"
+{
+ MNMailboxes *self G_GNUC_UNUSED;
+
+ self = MN_MAILBOXES (object);
+
+ switch (property_id) {
+ case PROP_MUST_POLL:
+ {
+#line 136 "mn-mailboxes.gob"
+
+ gboolean must_poll = FALSE;
+ GSList *l;
+
+ MN_LIST_FOREACH(l, selfp->list)
+ if (MN_MAILBOX_MUST_POLL(l->data))
+ {
+ must_poll = TRUE;
+ break;
+ }
+
+ g_value_set_boolean(VAL, must_poll);
+
+#line 434 "mn-mailboxes.c"
+ }
+ break;
+ default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+# undef G_STRLOC
+# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+#line 48 "mn-mailboxes.gob"
+static void
+mn_mailboxes_mailbox_added (MNMailboxes * self, MNMailbox * mailbox)
+#line 453 "mn-mailboxes.c"
+{
+ GValue ___param_values[2];
+ GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 48 "mn-mailboxes.gob"
+ g_return_if_fail (self != NULL);
+#line 48 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 48 "mn-mailboxes.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 48 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 469 "mn-mailboxes.c"
+
+ ___param_values[0].g_type = 0;
+ g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+ g_value_set_instance (&___param_values[0], (gpointer) self);
+
+ ___param_values[1].g_type = 0;
+ g_value_init (&___param_values[1], G_TYPE_OBJECT);
+ g_value_set_object (&___param_values[1], (GObject *) mailbox);
+
+ g_signal_emitv (___param_values,
+ object_signals[MAILBOX_ADDED_SIGNAL],
+ 0 /* detail */,
+ &___return_val);
-#line 42 "mn-mailboxes.gob"
+ g_value_unset (&___param_values[0]);
+ g_value_unset (&___param_values[1]);
+}
+
+#line 58 "mn-mailboxes.gob"
+static void
+mn_mailboxes_mailbox_changed (MNMailboxes * self, MNMailbox * mailbox)
+#line 491 "mn-mailboxes.c"
+{
+ GValue ___param_values[2];
+ GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 58 "mn-mailboxes.gob"
+ g_return_if_fail (self != NULL);
+#line 58 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 58 "mn-mailboxes.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 58 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 507 "mn-mailboxes.c"
+
+ ___param_values[0].g_type = 0;
+ g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+ g_value_set_instance (&___param_values[0], (gpointer) self);
+
+ ___param_values[1].g_type = 0;
+ g_value_init (&___param_values[1], G_TYPE_OBJECT);
+ g_value_set_object (&___param_values[1], (GObject *) mailbox);
+
+ g_signal_emitv (___param_values,
+ object_signals[MAILBOX_CHANGED_SIGNAL],
+ 0 /* detail */,
+ &___return_val);
+
+ g_value_unset (&___param_values[0]);
+ g_value_unset (&___param_values[1]);
+}
+
+#line 69 "mn-mailboxes.gob"
+static void
+mn_mailboxes_mailbox_removed (MNMailboxes * self, MNMailbox * mailbox)
+#line 529 "mn-mailboxes.c"
+{
+ GValue ___param_values[2];
+ GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 69 "mn-mailboxes.gob"
+ g_return_if_fail (self != NULL);
+#line 69 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 69 "mn-mailboxes.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 69 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 545 "mn-mailboxes.c"
+
+ ___param_values[0].g_type = 0;
+ g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+ g_value_set_instance (&___param_values[0], (gpointer) self);
+
+ ___param_values[1].g_type = 0;
+ g_value_init (&___param_values[1], G_TYPE_OBJECT);
+ g_value_set_object (&___param_values[1], (GObject *) mailbox);
+
+ g_signal_emitv (___param_values,
+ object_signals[MAILBOX_REMOVED_SIGNAL],
+ 0 /* detail */,
+ &___return_val);
+
+ g_value_unset (&___param_values[0]);
+ g_value_unset (&___param_values[1]);
+}
+#line 69 "mn-mailboxes.gob"
+static void
+___real_mn_mailboxes_mailbox_removed (MNMailboxes * self G_GNUC_UNUSED, MNMailbox * mailbox)
+#line 566 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::mailbox_removed"
+{
+#line 71 "mn-mailboxes.gob"
+
+ /* has-new, messages and error have possibly changed */
+ self_has_new_changed(self);
+ self_messages_changed(self, FALSE);
+ self_error_changed(self);
+ }}
+#line 577 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 86 "mn-mailboxes.gob"
static void
mn_mailboxes_list_changed (MNMailboxes * self)
-#line 249 "mn-mailboxes.c"
+#line 583 "mn-mailboxes.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -253,11 +587,11 @@ mn_mailboxes_list_changed (MNMailboxes * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 42 "mn-mailboxes.gob"
+#line 86 "mn-mailboxes.gob"
g_return_if_fail (self != NULL);
-#line 42 "mn-mailboxes.gob"
+#line 86 "mn-mailboxes.gob"
g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 261 "mn-mailboxes.c"
+#line 595 "mn-mailboxes.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
@@ -270,11 +604,25 @@ memset (&___param_values, 0, sizeof (___param_values));
g_value_unset (&___param_values[0]);
}
+#line 86 "mn-mailboxes.gob"
+static void
+___real_mn_mailboxes_list_changed (MNMailboxes * self G_GNUC_UNUSED)
+#line 611 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::list_changed"
+{
+#line 88 "mn-mailboxes.gob"
+
+ /* must-poll has possibly changed */
+ g_object_notify(G_OBJECT(self), "must-poll");
+ }}
+#line 620 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
-#line 44 "mn-mailboxes.gob"
+#line 102 "mn-mailboxes.gob"
static void
-mn_mailboxes_status_changed (MNMailboxes * self)
-#line 278 "mn-mailboxes.c"
+mn_mailboxes_has_new_changed (MNMailboxes * self)
+#line 626 "mn-mailboxes.c"
{
GValue ___param_values[1];
GValue ___return_val;
@@ -282,36 +630,143 @@ mn_mailboxes_status_changed (MNMailboxes * self)
memset (&___return_val, 0, sizeof (___return_val));
memset (&___param_values, 0, sizeof (___param_values));
-#line 44 "mn-mailboxes.gob"
+#line 102 "mn-mailboxes.gob"
g_return_if_fail (self != NULL);
-#line 44 "mn-mailboxes.gob"
+#line 102 "mn-mailboxes.gob"
g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 290 "mn-mailboxes.c"
+#line 638 "mn-mailboxes.c"
___param_values[0].g_type = 0;
g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
g_value_set_instance (&___param_values[0], (gpointer) self);
g_signal_emitv (___param_values,
- object_signals[STATUS_CHANGED_SIGNAL],
+ object_signals[HAS_NEW_CHANGED_SIGNAL],
0 /* detail */,
&___return_val);
g_value_unset (&___param_values[0]);
}
+#line 118 "mn-mailboxes.gob"
+static void
+mn_mailboxes_messages_changed (MNMailboxes * self, gboolean has_new)
+#line 655 "mn-mailboxes.c"
+{
+ GValue ___param_values[2];
+ GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 118 "mn-mailboxes.gob"
+ g_return_if_fail (self != NULL);
+#line 118 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 667 "mn-mailboxes.c"
+
+ ___param_values[0].g_type = 0;
+ g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+ g_value_set_instance (&___param_values[0], (gpointer) self);
+
+ ___param_values[1].g_type = 0;
+ g_value_init (&___param_values[1], G_TYPE_BOOLEAN);
+ g_value_set_boolean (&___param_values[1], (gboolean ) has_new);
+
+ g_signal_emitv (___param_values,
+ object_signals[MESSAGES_CHANGED_SIGNAL],
+ 0 /* detail */,
+ &___return_val);
-#line 56 "mn-mailboxes.gob"
+ g_value_unset (&___param_values[0]);
+ g_value_unset (&___param_values[1]);
+}
+
+#line 130 "mn-mailboxes.gob"
+static void
+mn_mailboxes_error_changed (MNMailboxes * self)
+#line 689 "mn-mailboxes.c"
+{
+ GValue ___param_values[1];
+ GValue ___return_val;
+
+memset (&___return_val, 0, sizeof (___return_val));
+memset (&___param_values, 0, sizeof (___param_values));
+
+#line 130 "mn-mailboxes.gob"
+ g_return_if_fail (self != NULL);
+#line 130 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOXES (self));
+#line 701 "mn-mailboxes.c"
+
+ ___param_values[0].g_type = 0;
+ g_value_init (&___param_values[0], G_TYPE_FROM_INSTANCE (self));
+ g_value_set_instance (&___param_values[0], (gpointer) self);
+
+ g_signal_emitv (___param_values,
+ object_signals[ERROR_CHANGED_SIGNAL],
+ 0 /* detail */,
+ &___return_val);
+
+ g_value_unset (&___param_values[0]);
+}
+
+#line 136 "mn-mailboxes.gob"
+gboolean
+mn_mailboxes_get_must_poll (MNMailboxes * self)
+#line 718 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::get_must_poll"
+{
+#line 133 "mn-mailboxes.gob"
+ gboolean val; g_object_get (G_OBJECT (self), "must_poll", &val, NULL); return val;
+}}
+#line 725 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+
+#line 159 "mn-mailboxes.gob"
+static void
+___a_mn_mailboxes_finalize (GObject * object G_GNUC_UNUSED)
+#line 732 "mn-mailboxes.c"
+#define PARENT_HANDLER(___object) \
+ { if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::finalize"
+#line 159 "mn-mailboxes.gob"
+ g_return_if_fail (object != NULL);
+#line 159 "mn-mailboxes.gob"
+ g_return_if_fail (G_IS_OBJECT (object));
+#line 742 "mn-mailboxes.c"
+{
+#line 161 "mn-mailboxes.gob"
+
+ Self *self = SELF(object);
+
+ if (selfp->timeout_id)
+ g_source_remove(selfp->timeout_id);
+
+ eel_gconf_notification_remove(selfp->delay_notification_id);
+ eel_gconf_notification_remove(selfp->mailboxes_notification_id);
+
+ PARENT_HANDLER(object);
+ }}
+#line 756 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 173 "mn-mailboxes.gob"
static void
mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 308 "mn-mailboxes.c"
+#line 763 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::notify_delay_cb"
-#line 56 "mn-mailboxes.gob"
+#line 173 "mn-mailboxes.gob"
g_return_if_fail (user_data != NULL);
-#line 313 "mn-mailboxes.c"
+#line 768 "mn-mailboxes.c"
{
-#line 61 "mn-mailboxes.gob"
+#line 178 "mn-mailboxes.gob"
Self *self = user_data;
@@ -319,20 +774,20 @@ mn_mailboxes_notify_delay_cb (GConfClient * client, guint cnxn_id, GConfEntry *
self_install_timeout(self);
GDK_THREADS_LEAVE();
}}
-#line 323 "mn-mailboxes.c"
+#line 778 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 69 "mn-mailboxes.gob"
+#line 186 "mn-mailboxes.gob"
static void
mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 329 "mn-mailboxes.c"
+#line 784 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::notify_mailboxes_cb"
-#line 69 "mn-mailboxes.gob"
+#line 186 "mn-mailboxes.gob"
g_return_if_fail (user_data != NULL);
-#line 334 "mn-mailboxes.c"
+#line 789 "mn-mailboxes.c"
{
-#line 74 "mn-mailboxes.gob"
+#line 191 "mn-mailboxes.gob"
Self *self = user_data;
@@ -340,22 +795,22 @@ mn_mailboxes_notify_mailboxes_cb (GConfClient * client, guint cnxn_id, GConfEntr
self_update_from_conf(self);
GDK_THREADS_LEAVE();
}}
-#line 344 "mn-mailboxes.c"
+#line 799 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 82 "mn-mailboxes.gob"
+#line 199 "mn-mailboxes.gob"
static void
mn_mailboxes_update_from_conf (MNMailboxes * self)
-#line 350 "mn-mailboxes.c"
+#line 805 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::update_from_conf"
-#line 82 "mn-mailboxes.gob"
+#line 199 "mn-mailboxes.gob"
g_return_if_fail (self != NULL);
-#line 82 "mn-mailboxes.gob"
+#line 199 "mn-mailboxes.gob"
g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 357 "mn-mailboxes.c"
+#line 812 "mn-mailboxes.c"
{
-#line 84 "mn-mailboxes.gob"
+#line 201 "mn-mailboxes.gob"
GSList *gconf_mailboxes;
GSList *l;
@@ -372,7 +827,11 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
if (! self_conf_find_uri(gconf_mailboxes, mailbox->uri))
{
- selfp->list = mn_g_object_slist_delete_link(selfp->list, l);
+ selfp->list = g_slist_delete_link(selfp->list, l);
+
+ self_mailbox_removed(self, mailbox);
+ g_object_unref(mailbox);
+
changed = TRUE;
goto loop;
}
@@ -392,6 +851,8 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
mailbox = mn_pending_mailbox_new(uri);
selfp->list = g_slist_append(selfp->list, mailbox);
+
+ self_mailbox_added(self, mailbox);
changed = TRUE;
mn_mailbox_new_async(uri, self_new_cb, self);
@@ -403,24 +864,24 @@ mn_mailboxes_update_from_conf (MNMailboxes * self)
if (changed)
self_list_changed(self);
}}
-#line 407 "mn-mailboxes.c"
+#line 868 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
static void
mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
-#line 413 "mn-mailboxes.c"
+#line 874 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::new_cb"
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
g_return_if_fail (mailbox != NULL);
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 132 "mn-mailboxes.gob"
+#line 255 "mn-mailboxes.gob"
g_return_if_fail (user_data != NULL);
-#line 422 "mn-mailboxes.c"
+#line 883 "mn-mailboxes.c"
{
-#line 135 "mn-mailboxes.gob"
+#line 258 "mn-mailboxes.gob"
Self *self = user_data;
GSList *elem;
@@ -431,8 +892,11 @@ mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
mn_info(_("%s is unsupported: %s"), mn_mailbox_get_name(mailbox), mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
- g_signal_connect(G_OBJECT(mailbox), "notify::has-new", G_CALLBACK(self_notify_has_new_h), self);
- g_signal_connect(G_OBJECT(mailbox), "notify::error", G_CALLBACK(self_notify_error_h), self);
+ g_object_connect(mailbox,
+ "signal::notify::has-new", self_notify_has_new_h, self,
+ "signal::messages-changed", self_messages_changed_h, self,
+ "signal::notify::error", self_notify_error_h, self,
+ NULL);
if (MN_MAILBOX_CAN_CHECK(mailbox))
mn_mailbox_check(mailbox);
@@ -440,31 +904,32 @@ mn_mailboxes_new_cb (MNMailbox * mailbox, gpointer user_data)
g_object_unref(elem->data);
elem->data = mailbox;
+ self_mailbox_changed(self, mailbox);
self_list_changed(self);
}
else
g_object_unref(mailbox);
}}
-#line 449 "mn-mailboxes.c"
+#line 914 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
static void
mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 455 "mn-mailboxes.c"
+#line 920 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::notify_has_new_h"
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
g_return_if_fail (object != NULL);
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
g_return_if_fail (G_IS_OBJECT (object));
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
g_return_if_fail (pspec != NULL);
-#line 160 "mn-mailboxes.gob"
+#line 287 "mn-mailboxes.gob"
g_return_if_fail (user_data != NULL);
-#line 466 "mn-mailboxes.c"
+#line 931 "mn-mailboxes.c"
{
-#line 164 "mn-mailboxes.gob"
+#line 291 "mn-mailboxes.gob"
Self *self = user_data;
MNMailbox *mailbox = MN_MAILBOX(object);
@@ -473,28 +938,51 @@ mn_mailboxes_notify_has_new_h (GObject * object, GParamSpec * pspec, gpointer us
has_new = mn_mailbox_get_has_new(mailbox);
mn_info(has_new ? _("%s has new mail") : _("%s has no new mail"), mn_mailbox_get_name(mailbox));
- self_status_changed(self);
+ self_has_new_changed(self);
}}
-#line 479 "mn-mailboxes.c"
+#line 944 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 175 "mn-mailboxes.gob"
+#line 302 "mn-mailboxes.gob"
+static void
+mn_mailboxes_messages_changed_h (MNMailbox * mailbox, gboolean has_new, gpointer user_data)
+#line 950 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::messages_changed_h"
+#line 302 "mn-mailboxes.gob"
+ g_return_if_fail (mailbox != NULL);
+#line 302 "mn-mailboxes.gob"
+ g_return_if_fail (MN_IS_MAILBOX (mailbox));
+#line 302 "mn-mailboxes.gob"
+ g_return_if_fail (user_data != NULL);
+#line 959 "mn-mailboxes.c"
+{
+#line 306 "mn-mailboxes.gob"
+
+ Self *self = user_data;
+
+ self_messages_changed(self, has_new);
+ }}
+#line 967 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 312 "mn-mailboxes.gob"
static void
mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 485 "mn-mailboxes.c"
+#line 973 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::notify_error_h"
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
g_return_if_fail (object != NULL);
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
g_return_if_fail (G_IS_OBJECT (object));
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
g_return_if_fail (pspec != NULL);
-#line 175 "mn-mailboxes.gob"
+#line 312 "mn-mailboxes.gob"
g_return_if_fail (user_data != NULL);
-#line 496 "mn-mailboxes.c"
+#line 984 "mn-mailboxes.c"
{
-#line 179 "mn-mailboxes.gob"
+#line 316 "mn-mailboxes.gob"
Self *self = user_data;
MNMailbox *mailbox = MN_MAILBOX(object);
@@ -504,24 +992,24 @@ mn_mailboxes_notify_error_h (GObject * object, GParamSpec * pspec, gpointer user
if (error)
mn_info(_("%s reported an error: %s"), mn_mailbox_get_name(mailbox), error);
- self_status_changed(self);
+ self_error_changed(self);
}}
-#line 510 "mn-mailboxes.c"
+#line 998 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 191 "mn-mailboxes.gob"
+#line 328 "mn-mailboxes.gob"
static void
mn_mailboxes_install_timeout (MNMailboxes * self)
-#line 516 "mn-mailboxes.c"
+#line 1004 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::install_timeout"
-#line 191 "mn-mailboxes.gob"
+#line 328 "mn-mailboxes.gob"
g_return_if_fail (self != NULL);
-#line 191 "mn-mailboxes.gob"
+#line 328 "mn-mailboxes.gob"
g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 523 "mn-mailboxes.c"
+#line 1011 "mn-mailboxes.c"
{
-#line 193 "mn-mailboxes.gob"
+#line 330 "mn-mailboxes.gob"
int minutes;
int seconds;
@@ -540,20 +1028,20 @@ mn_mailboxes_install_timeout (MNMailboxes * self)
self_timeout_cb,
self);
}}
-#line 544 "mn-mailboxes.c"
+#line 1032 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 212 "mn-mailboxes.gob"
+#line 349 "mn-mailboxes.gob"
static gboolean
mn_mailboxes_timeout_cb (gpointer data)
-#line 550 "mn-mailboxes.c"
+#line 1038 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::timeout_cb"
-#line 212 "mn-mailboxes.gob"
+#line 349 "mn-mailboxes.gob"
g_return_val_if_fail (data != NULL, (gboolean )0);
-#line 555 "mn-mailboxes.c"
+#line 1043 "mn-mailboxes.c"
{
-#line 214 "mn-mailboxes.gob"
+#line 351 "mn-mailboxes.gob"
Self *self = data;
@@ -563,22 +1051,22 @@ mn_mailboxes_timeout_cb (gpointer data)
return TRUE; /* continue */
}}
-#line 567 "mn-mailboxes.c"
+#line 1055 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 224 "mn-mailboxes.gob"
+#line 361 "mn-mailboxes.gob"
void
mn_mailboxes_check (MNMailboxes * self)
-#line 573 "mn-mailboxes.c"
+#line 1061 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::check"
-#line 224 "mn-mailboxes.gob"
+#line 361 "mn-mailboxes.gob"
g_return_if_fail (self != NULL);
-#line 224 "mn-mailboxes.gob"
+#line 361 "mn-mailboxes.gob"
g_return_if_fail (MN_IS_MAILBOXES (self));
-#line 580 "mn-mailboxes.c"
+#line 1068 "mn-mailboxes.c"
{
-#line 226 "mn-mailboxes.gob"
+#line 363 "mn-mailboxes.gob"
GSList *l;
@@ -586,47 +1074,78 @@ mn_mailboxes_check (MNMailboxes * self)
{
MNMailbox *mailbox = l->data;
- if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
+ if (MN_MAILBOX_MUST_POLL(mailbox))
mn_mailbox_check(mailbox);
}
}}
-#line 594 "mn-mailboxes.c"
+#line 1082 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 238 "mn-mailboxes.gob"
+#line 375 "mn-mailboxes.gob"
GSList *
mn_mailboxes_get (MNMailboxes * self)
-#line 600 "mn-mailboxes.c"
+#line 1088 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::get"
-#line 238 "mn-mailboxes.gob"
+#line 375 "mn-mailboxes.gob"
g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 238 "mn-mailboxes.gob"
+#line 375 "mn-mailboxes.gob"
g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 607 "mn-mailboxes.c"
+#line 1095 "mn-mailboxes.c"
{
-#line 240 "mn-mailboxes.gob"
+#line 377 "mn-mailboxes.gob"
return selfp->list;
}}
-#line 613 "mn-mailboxes.c"
+#line 1101 "mn-mailboxes.c"
+#undef __GOB_FUNCTION__
+
+#line 381 "mn-mailboxes.gob"
+GSList *
+mn_mailboxes_get_messages (MNMailboxes * self)
+#line 1107 "mn-mailboxes.c"
+{
+#define __GOB_FUNCTION__ "MN:Mailboxes::get_messages"
+#line 381 "mn-mailboxes.gob"
+ g_return_val_if_fail (self != NULL, (GSList * )0);
+#line 381 "mn-mailboxes.gob"
+ g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
+#line 1114 "mn-mailboxes.c"
+{
+#line 383 "mn-mailboxes.gob"
+
+ GSList *messages = NULL;
+ GSList *l;
+
+ MN_LIST_FOREACH(l, selfp->list)
+ {
+ MNMailbox *mailbox = l->data;
+ messages = g_slist_concat(messages, mn_g_object_slist_copy(mn_mailbox_get_messages(mailbox)));
+ }
+
+ messages = mn_message_slist_sort_by_sent_time(messages);
+ messages = g_slist_reverse(messages);
+
+ return messages;
+ }}
+#line 1132 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
GSList *
mn_mailboxes_find (MNMailboxes * self, const char * text_uri)
-#line 619 "mn-mailboxes.c"
+#line 1138 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::find"
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 244 "mn-mailboxes.gob"
+#line 399 "mn-mailboxes.gob"
g_return_val_if_fail (text_uri != NULL, (GSList * )0);
-#line 628 "mn-mailboxes.c"
+#line 1147 "mn-mailboxes.c"
{
-#line 246 "mn-mailboxes.gob"
+#line 401 "mn-mailboxes.gob"
MNURI *uri;
GSList *elem;
@@ -637,60 +1156,60 @@ mn_mailboxes_find (MNMailboxes * self, const char * text_uri)
return elem;
}}
-#line 641 "mn-mailboxes.c"
+#line 1160 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
GSList *
mn_mailboxes_find_uri (MNMailboxes * self, MNURI * uri)
-#line 647 "mn-mailboxes.c"
+#line 1166 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::find_uri"
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
g_return_val_if_fail (self != NULL, (GSList * )0);
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
g_return_val_if_fail (MN_IS_MAILBOXES (self), (GSList * )0);
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
g_return_val_if_fail (uri != NULL, (GSList * )0);
-#line 257 "mn-mailboxes.gob"
+#line 412 "mn-mailboxes.gob"
g_return_val_if_fail (MN_IS_URI (uri), (GSList * )0);
-#line 658 "mn-mailboxes.c"
+#line 1177 "mn-mailboxes.c"
{
-#line 259 "mn-mailboxes.gob"
+#line 414 "mn-mailboxes.gob"
return g_slist_find_custom(selfp->list, uri, self_find_compare_func);
}}
-#line 664 "mn-mailboxes.c"
+#line 1183 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 263 "mn-mailboxes.gob"
+#line 418 "mn-mailboxes.gob"
static int
mn_mailboxes_find_compare_func (gconstpointer a, gconstpointer b)
-#line 670 "mn-mailboxes.c"
+#line 1189 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::find_compare_func"
{
-#line 265 "mn-mailboxes.gob"
+#line 420 "mn-mailboxes.gob"
MNMailbox *mailbox = (MNMailbox *) a;
MNURI *uri = (MNURI *) b;
return strcmp(mailbox->uri->text, uri->text);
}}
-#line 681 "mn-mailboxes.c"
+#line 1200 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 272 "mn-mailboxes.gob"
+#line 427 "mn-mailboxes.gob"
GSList *
mn_mailboxes_conf_find (GSList * gconf_mailboxes, const char * text_uri)
-#line 687 "mn-mailboxes.c"
+#line 1206 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::conf_find"
-#line 272 "mn-mailboxes.gob"
+#line 427 "mn-mailboxes.gob"
g_return_val_if_fail (text_uri != NULL, (GSList * )0);
-#line 692 "mn-mailboxes.c"
+#line 1211 "mn-mailboxes.c"
{
-#line 274 "mn-mailboxes.gob"
+#line 429 "mn-mailboxes.gob"
MNURI *uri;
GSList *elem;
@@ -701,36 +1220,36 @@ mn_mailboxes_conf_find (GSList * gconf_mailboxes, const char * text_uri)
return elem;
}}
-#line 705 "mn-mailboxes.c"
+#line 1224 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 285 "mn-mailboxes.gob"
+#line 440 "mn-mailboxes.gob"
GSList *
mn_mailboxes_conf_find_uri (GSList * gconf_mailboxes, MNURI * uri)
-#line 711 "mn-mailboxes.c"
+#line 1230 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::conf_find_uri"
-#line 285 "mn-mailboxes.gob"
+#line 440 "mn-mailboxes.gob"
g_return_val_if_fail (uri != NULL, (GSList * )0);
-#line 285 "mn-mailboxes.gob"
+#line 440 "mn-mailboxes.gob"
g_return_val_if_fail (MN_IS_URI (uri), (GSList * )0);
-#line 718 "mn-mailboxes.c"
+#line 1237 "mn-mailboxes.c"
{
-#line 287 "mn-mailboxes.gob"
+#line 442 "mn-mailboxes.gob"
return g_slist_find_custom(gconf_mailboxes, uri, self_conf_find_compare_func);
}}
-#line 724 "mn-mailboxes.c"
+#line 1243 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 291 "mn-mailboxes.gob"
+#line 446 "mn-mailboxes.gob"
static int
mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b)
-#line 730 "mn-mailboxes.c"
+#line 1249 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::conf_find_compare_func"
{
-#line 293 "mn-mailboxes.gob"
+#line 448 "mn-mailboxes.gob"
MNURI *uri_a;
MNURI *uri_b = (MNURI *) b;
@@ -742,52 +1261,19 @@ mn_mailboxes_conf_find_compare_func (gconstpointer a, gconstpointer b)
return cmp;
}}
-#line 746 "mn-mailboxes.c"
-#undef __GOB_FUNCTION__
-
-#line 305 "mn-mailboxes.gob"
-gboolean
-mn_mailboxes_has_manual (MNMailboxes * self)
-#line 752 "mn-mailboxes.c"
-{
-#define __GOB_FUNCTION__ "MN:Mailboxes::has_manual"
-#line 305 "mn-mailboxes.gob"
- g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 305 "mn-mailboxes.gob"
- g_return_val_if_fail (MN_IS_MAILBOXES (self), (gboolean )0);
-#line 759 "mn-mailboxes.c"
-{
-#line 307 "mn-mailboxes.gob"
-
- gboolean has_manual = FALSE;
- GSList *l;
-
- MN_LIST_FOREACH(l, selfp->list)
- {
- MNMailbox *mailbox = l->data;
-
- if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
- {
- has_manual = TRUE;
- break;
- }
- }
-
- return has_manual;
- }}
-#line 779 "mn-mailboxes.c"
+#line 1265 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
-#line 325 "mn-mailboxes.gob"
+#line 460 "mn-mailboxes.gob"
MNMailboxes *
mn_mailboxes_new (void)
-#line 785 "mn-mailboxes.c"
+#line 1271 "mn-mailboxes.c"
{
#define __GOB_FUNCTION__ "MN:Mailboxes::new"
{
-#line 327 "mn-mailboxes.gob"
+#line 462 "mn-mailboxes.gob"
return MN_MAILBOXES(GET_NEW);
}}
-#line 793 "mn-mailboxes.c"
+#line 1279 "mn-mailboxes.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-mailboxes.gob b/src/mn-mailboxes.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -32,17 +34,118 @@
class MN:Mailboxes from G:Object
{
private GSList *list destroywith mn_g_object_slist_free;
- private unsigned int timeout_id
- destroy { if (VAR) g_source_remove(VAR); };
- private unsigned int delay_notification_id
- destroy { eel_gconf_notification_remove(VAR); };
- private unsigned int mailboxes_notification_id
- destroy { eel_gconf_notification_remove(VAR); };
+ private unsigned int timeout_id;
+ private unsigned int delay_notification_id;
+ private unsigned int mailboxes_notification_id;
+ /**
+ * mailbox-added:
+ * @self: the object which received the signal
+ * @mailbox: the mailbox which is about to be added
+ *
+ * This signal gets emitted after a mailbox is added to the list.
+ **/
+ signal private NONE (OBJECT)
+ void mailbox_added (self, MN:Mailbox *mailbox (check null type));
+
+ /**
+ * mailbox-changed:
+ * @self: the object which received the signal
+ * @mailbox: the mailbox which has changed
+ *
+ * This signal gets emitted after a mailbox changes type.
+ **/
+ signal private NONE (OBJECT)
+ void mailbox_changed (self, MN:Mailbox *mailbox (check null type));
+
+ /**
+ * mailbox-removed:
+ * @self: the object which received the signal
+ * @mailbox: the mailbox which is about to be removed
+ *
+ * This signal gets emitted after a mailbox is removed from the
+ * list.
+ **/
+ signal first private NONE (OBJECT)
+ void mailbox_removed (self, MN:Mailbox *mailbox (check null type))
+ {
+ /* has-new, messages and error have possibly changed */
+ self_has_new_changed(self);
+ self_messages_changed(self, FALSE);
+ self_error_changed(self);
+ }
+
+ /**
+ * list-changed:
+ * @self: the object which received the signal
+ *
+ * This signal gets emitted after the mailbox list changes (but more
+ * than one mailbox may have been added, removed or have changed
+ * between two emissions of this signal).
+ **/
+ signal first private NONE (NONE)
+ void list_changed (self)
+ {
+ /* must-poll has possibly changed */
+ g_object_notify(G_OBJECT(self), "must-poll");
+ }
+
+ /**
+ * has-new-changed:
+ * @self: the object which received the signal
+ *
+ * This signal gets emitted whenever the global has-new state has
+ * possibly changed, eitheir because one of the mailboxes has-new
+ * property has changed, or because a mailbox has been removed from
+ * the list.
+ **/
signal private NONE (NONE)
- void list_changed (self);
+ void has_new_changed (self);
+
+ /**
+ * messages-changed:
+ * @self: the object which received the signal
+ * @has_new: whether a new message has been received or not
+ *
+ * This signal gets emitted whenever a call to
+ * mn_mailboxes_get_messages() would lead to a different list than
+ * before the signal emission.
+ *
+ * Note: messages are only compared by id, therefore two messages
+ * having the same id and different data are not considered
+ * different.
+ **/
+ signal private NONE (BOOLEAN)
+ void messages_changed (self, gboolean has_new);
+
+ /**
+ * error-changed:
+ * @self: the object which received the signal
+ *
+ * This signal gets emitted whenever the global error state has
+ * possibly changed, eitheir because one of the mailboxes error
+ * property has changed, or because a mailbox has been removed from
+ * the list.
+ **/
signal private NONE (NONE)
- void status_changed (self);
+ void error_changed (self);
+
+ property BOOLEAN must_poll (blurb = _("Whether one or more of the mailboxes has to be polled"),
+ export)
+ get
+ {
+ gboolean must_poll = FALSE;
+ GSList *l;
+
+ MN_LIST_FOREACH(l, selfp->list)
+ if (MN_MAILBOX_MUST_POLL(l->data))
+ {
+ must_poll = TRUE;
+ break;
+ }
+
+ g_value_set_boolean(VAL, must_poll);
+ };
init (self)
{
@@ -53,6 +156,20 @@ class MN:Mailboxes from G:Object
selfp->mailboxes_notification_id = eel_gconf_notification_add(MN_CONF_MAILBOXES, self_notify_mailboxes_cb, self);
}
+ override (G:Object) void
+ finalize (G:Object *object (check null type))
+ {
+ Self *self = SELF(object);
+
+ if (selfp->timeout_id)
+ g_source_remove(selfp->timeout_id);
+
+ eel_gconf_notification_remove(selfp->delay_notification_id);
+ eel_gconf_notification_remove(selfp->mailboxes_notification_id);
+
+ PARENT_HANDLER(object);
+ }
+
private void
notify_delay_cb (GConfClient *client,
guint cnxn_id,
@@ -97,7 +214,11 @@ class MN:Mailboxes from G:Object
if (! self_conf_find_uri(gconf_mailboxes, mailbox->uri))
{
- selfp->list = mn_g_object_slist_delete_link(selfp->list, l);
+ selfp->list = g_slist_delete_link(selfp->list, l);
+
+ self_mailbox_removed(self, mailbox);
+ g_object_unref(mailbox);
+
changed = TRUE;
goto loop;
}
@@ -117,6 +238,8 @@ class MN:Mailboxes from G:Object
mailbox = mn_pending_mailbox_new(uri);
selfp->list = g_slist_append(selfp->list, mailbox);
+
+ self_mailbox_added(self, mailbox);
changed = TRUE;
mn_mailbox_new_async(uri, self_new_cb, self);
@@ -142,8 +265,11 @@ class MN:Mailboxes from G:Object
if (MN_IS_UNSUPPORTED_MAILBOX(mailbox))
mn_info(_("%s is unsupported: %s"), mn_mailbox_get_name(mailbox), mn_unsupported_mailbox_get_reason(MN_UNSUPPORTED_MAILBOX(mailbox)));
- g_signal_connect(G_OBJECT(mailbox), "notify::has-new", G_CALLBACK(self_notify_has_new_h), self);
- g_signal_connect(G_OBJECT(mailbox), "notify::error", G_CALLBACK(self_notify_error_h), self);
+ g_object_connect(mailbox,
+ "signal::notify::has-new", self_notify_has_new_h, self,
+ "signal::messages-changed", self_messages_changed_h, self,
+ "signal::notify::error", self_notify_error_h, self,
+ NULL);
if (MN_MAILBOX_CAN_CHECK(mailbox))
mn_mailbox_check(mailbox);
@@ -151,6 +277,7 @@ class MN:Mailboxes from G:Object
g_object_unref(elem->data);
elem->data = mailbox;
+ self_mailbox_changed(self, mailbox);
self_list_changed(self);
}
else
@@ -169,10 +296,20 @@ class MN:Mailboxes from G:Object
has_new = mn_mailbox_get_has_new(mailbox);
mn_info(has_new ? _("%s has new mail") : _("%s has no new mail"), mn_mailbox_get_name(mailbox));
- self_status_changed(self);
+ self_has_new_changed(self);
}
private void
+ messages_changed_h (MN:Mailbox *mailbox (check null type),
+ gboolean has_new,
+ gpointer user_data (check null))
+ {
+ Self *self = user_data;
+
+ self_messages_changed(self, has_new);
+ }
+
+ private void
notify_error_h (G:Object *object (check null type),
GParamSpec *pspec (check null),
gpointer user_data (check null))
@@ -185,7 +322,7 @@ class MN:Mailboxes from G:Object
if (error)
mn_info(_("%s reported an error: %s"), mn_mailbox_get_name(mailbox), error);
- self_status_changed(self);
+ self_error_changed(self);
}
private void
@@ -230,7 +367,7 @@ class MN:Mailboxes from G:Object
{
MNMailbox *mailbox = l->data;
- if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
+ if (MN_MAILBOX_MUST_POLL(mailbox))
mn_mailbox_check(mailbox);
}
}
@@ -242,6 +379,24 @@ class MN:Mailboxes from G:Object
}
public GSList *
+ get_messages (self)
+ {
+ GSList *messages = NULL;
+ GSList *l;
+
+ MN_LIST_FOREACH(l, selfp->list)
+ {
+ MNMailbox *mailbox = l->data;
+ messages = g_slist_concat(messages, mn_g_object_slist_copy(mn_mailbox_get_messages(mailbox)));
+ }
+
+ messages = mn_message_slist_sort_by_sent_time(messages);
+ messages = g_slist_reverse(messages);
+
+ return messages;
+ }
+
+ public GSList *
find (self, const char *text_uri (check null))
{
MNURI *uri;
@@ -302,26 +457,6 @@ class MN:Mailboxes from G:Object
return cmp;
}
- public gboolean
- has_manual (self)
- {
- gboolean has_manual = FALSE;
- GSList *l;
-
- MN_LIST_FOREACH(l, selfp->list)
- {
- MNMailbox *mailbox = l->data;
-
- if (MN_MAILBOX_CAN_CHECK(mailbox) && ! mn_mailbox_get_automatic(mailbox))
- {
- has_manual = TRUE;
- break;
- }
- }
-
- return has_manual;
- }
-
public MNMailboxes *
new (void)
{
diff --git a/src/mn-mailboxes.h b/src/mn-mailboxes.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
@@ -47,8 +47,13 @@ struct _MNMailboxes {
typedef struct _MNMailboxesClass MNMailboxesClass;
struct _MNMailboxesClass {
GObjectClass __parent__;
+ /*signal*/void (* mailbox_added) (MNMailboxes * self, MNMailbox * mailbox);
+ /*signal*/void (* mailbox_changed) (MNMailboxes * self, MNMailbox * mailbox);
+ /*signal*/void (* mailbox_removed) (MNMailboxes * self, MNMailbox * mailbox);
/*signal*/void (* list_changed) (MNMailboxes * self);
- /*signal*/void (* status_changed) (MNMailboxes * self);
+ /*signal*/void (* has_new_changed) (MNMailboxes * self);
+ /*signal*/void (* messages_changed) (MNMailboxes * self, gboolean has_new);
+ /*signal*/void (* error_changed) (MNMailboxes * self);
};
@@ -56,8 +61,10 @@ struct _MNMailboxesClass {
* Public methods
*/
GType mn_mailboxes_get_type (void);
+gboolean mn_mailboxes_get_must_poll (MNMailboxes * self);
void mn_mailboxes_check (MNMailboxes * self);
GSList * mn_mailboxes_get (MNMailboxes * self);
+GSList * mn_mailboxes_get_messages (MNMailboxes * self);
GSList * mn_mailboxes_find (MNMailboxes * self,
const char * text_uri);
GSList * mn_mailboxes_find_uri (MNMailboxes * self,
@@ -66,26 +73,65 @@ GSList * mn_mailboxes_conf_find (GSList * gconf_mailboxes,
const char * text_uri);
GSList * mn_mailboxes_conf_find_uri (GSList * gconf_mailboxes,
MNURI * uri);
-gboolean mn_mailboxes_has_manual (MNMailboxes * self);
MNMailboxes * mn_mailboxes_new (void);
/*
* Signal connection wrapper macros
*/
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define mn_mailboxes_connect__mailbox_added(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data))
+#define mn_mailboxes_connect_after__mailbox_added(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data))
+#define mn_mailboxes_connect_data__mailbox_added(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_added",(GCallback) __extension__ ({void (* ___mailbox_added) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_added; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_changed",(GCallback) __extension__ ({void (* ___mailbox_changed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_changed; }), (data))
+#define mn_mailboxes_connect_after__mailbox_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_changed",(GCallback) __extension__ ({void (* ___mailbox_changed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_changed; }), (data))
+#define mn_mailboxes_connect_data__mailbox_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_changed",(GCallback) __extension__ ({void (* ___mailbox_changed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_removed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data))
+#define mn_mailboxes_connect_after__mailbox_removed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data))
+#define mn_mailboxes_connect_data__mailbox_removed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"mailbox_removed",(GCallback) __extension__ ({void (* ___mailbox_removed) (MNMailboxes * ___fake___self, MNMailbox * ___fake___mailbox, gpointer ___data ) = (func); ___mailbox_removed; }), (data), (destroy_data), (GConnectFlags)(flags))
#define mn_mailboxes_connect__list_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data))
#define mn_mailboxes_connect_after__list_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data))
#define mn_mailboxes_connect_data__list_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"list_changed",(GCallback) __extension__ ({void (* ___list_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___list_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
-#define mn_mailboxes_connect__status_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"status_changed",(GCallback) __extension__ ({void (* ___status_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___status_changed; }), (data))
-#define mn_mailboxes_connect_after__status_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"status_changed",(GCallback) __extension__ ({void (* ___status_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___status_changed; }), (data))
-#define mn_mailboxes_connect_data__status_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"status_changed",(GCallback) __extension__ ({void (* ___status_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___status_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__has_new_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"has_new_changed",(GCallback) __extension__ ({void (* ___has_new_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___has_new_changed; }), (data))
+#define mn_mailboxes_connect_after__has_new_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"has_new_changed",(GCallback) __extension__ ({void (* ___has_new_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___has_new_changed; }), (data))
+#define mn_mailboxes_connect_data__has_new_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"has_new_changed",(GCallback) __extension__ ({void (* ___has_new_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___has_new_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailboxes_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data))
+#define mn_mailboxes_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"messages_changed",(GCallback) __extension__ ({void (* ___messages_changed) (MNMailboxes * ___fake___self, gboolean ___fake___has_new, gpointer ___data ) = (func); ___messages_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
+#define mn_mailboxes_connect__error_changed(object,func,data) g_signal_connect(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data))
+#define mn_mailboxes_connect_after__error_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data))
+#define mn_mailboxes_connect_data__error_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(__extension__ ({MNMailboxes *___object = (object); ___object; })),"error_changed",(GCallback) __extension__ ({void (* ___error_changed) (MNMailboxes * ___fake___self, gpointer ___data ) = (func); ___error_changed; }), (data), (destroy_data), (GConnectFlags)(flags))
#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define mn_mailboxes_connect__mailbox_added(object,func,data) g_signal_connect(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__mailbox_added(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__mailbox_added(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"mailbox_added",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"mailbox_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__mailbox_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"mailbox_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__mailbox_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"mailbox_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__mailbox_removed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__mailbox_removed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__mailbox_removed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"mailbox_removed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
#define mn_mailboxes_connect__list_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data))
#define mn_mailboxes_connect_after__list_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data))
#define mn_mailboxes_connect_data__list_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"list_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
-#define mn_mailboxes_connect__status_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"status_changed",(GCallback)(func),(data))
-#define mn_mailboxes_connect_after__status_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"status_changed",(GCallback)(func),(data))
-#define mn_mailboxes_connect_data__status_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"status_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__has_new_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"has_new_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__has_new_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"has_new_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__has_new_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"has_new_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__messages_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__messages_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__messages_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"messages_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#define mn_mailboxes_connect__error_changed(object,func,data) g_signal_connect(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_after__error_changed(object,func,data) g_signal_connect_after(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data))
+#define mn_mailboxes_connect_data__error_changed(object,func,data,destroy_data,flags) g_signal_connect_data(MN_MAILBOXES(object),"error_changed",(GCallback)(func),(data),(destroy_data),(GConnectFlags)(flags))
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MAILBOXES_GET_PROP_MUST_POLL(arg) "must_poll", __extension__ ({gboolean *z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MAILBOXES_GET_PROP_MUST_POLL(arg) "must_poll",(gboolean *)(arg)
#endif /* __GNUC__ && !__STRICT_ANSI__ */
diff --git a/src/mn-maildir-mailbox-private.h b/src/mn-maildir-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MAILDIR_MAILBOX_PRIVATE_H__
#define __MN_MAILDIR_MAILBOX_PRIVATE_H__
diff --git a/src/mn-maildir-mailbox.c b/src/mn-maildir-mailbox.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-maildir-mailbox.h"
#include "mn-maildir-mailbox-private.h"
@@ -21,15 +23,18 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-maildir-mailbox.gob"
+#line 24 "mn-maildir-mailbox.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
-#line 33 "mn-maildir-mailbox.c"
+#line 38 "mn-maildir-mailbox.c"
/* self casting macros */
#define SELF(x) MN_MAILDIR_MAILBOX(x)
#define SELF_CONST(x) MN_MAILDIR_MAILBOX_CONST(x)
@@ -101,10 +106,10 @@ mn_maildir_mailbox_init (MNMaildirMailbox * o G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:Maildir:Mailbox::init"
}
#undef __GOB_FUNCTION__
-#line 32 "mn-maildir-mailbox.gob"
+#line 37 "mn-maildir-mailbox.gob"
static void
mn_maildir_mailbox_class_init (MNMaildirMailboxClass * class G_GNUC_UNUSED)
-#line 108 "mn-maildir-mailbox.c"
+#line 113 "mn-maildir-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Maildir:Mailbox::class_init"
GObjectClass *g_object_class = (GObjectClass *)class;
@@ -112,29 +117,29 @@ mn_maildir_mailbox_class_init (MNMaildirMailboxClass * class G_GNUC_UNUSED)
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 37 "mn-maildir-mailbox.gob"
+#line 42 "mn-maildir-mailbox.gob"
g_object_class->constructor = ___2_mn_maildir_mailbox_constructor;
-#line 65 "mn-maildir-mailbox.gob"
+#line 73 "mn-maildir-mailbox.gob"
mn_mailbox_class->impl_is = ___3_mn_maildir_mailbox_impl_is;
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
mn_mailbox_class->impl_threaded_check = ___4_mn_maildir_mailbox_impl_threaded_check;
-#line 122 "mn-maildir-mailbox.c"
+#line 127 "mn-maildir-mailbox.c"
{
-#line 33 "mn-maildir-mailbox.gob"
+#line 38 "mn-maildir-mailbox.gob"
MN_MAILBOX_CLASS(class)->format = "Maildir";
-#line 128 "mn-maildir-mailbox.c"
+#line 133 "mn-maildir-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 37 "mn-maildir-mailbox.gob"
+#line 42 "mn-maildir-mailbox.gob"
static GObject *
___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 138 "mn-maildir-mailbox.c"
+#line 143 "mn-maildir-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -142,7 +147,7 @@ ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct
{
#define __GOB_FUNCTION__ "MN:Maildir:Mailbox::constructor"
{
-#line 39 "mn-maildir-mailbox.gob"
+#line 44 "mn-maildir-mailbox.gob"
GObject *object;
MNMailbox *self;
@@ -159,6 +164,9 @@ ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct
new_uri,
GNOME_VFS_MONITOR_DIRECTORY,
MN_MAILBOX_MONITOR_EVENT_DELETED
+#ifdef WITH_MIME
+ | MN_MAILBOX_MONITOR_EVENT_CHANGED
+#endif
| MN_MAILBOX_MONITOR_EVENT_CREATED);
gdk_flush();
@@ -168,25 +176,25 @@ ___2_mn_maildir_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct
return object;
}}
-#line 172 "mn-maildir-mailbox.c"
+#line 180 "mn-maildir-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 65 "mn-maildir-mailbox.gob"
+#line 73 "mn-maildir-mailbox.gob"
static gboolean
___3_mn_maildir_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 179 "mn-maildir-mailbox.c"
+#line 187 "mn-maildir-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:Maildir:Mailbox::impl_is"
-#line 65 "mn-maildir-mailbox.gob"
+#line 73 "mn-maildir-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 188 "mn-maildir-mailbox.c"
+#line 196 "mn-maildir-mailbox.c"
{
-#line 67 "mn-maildir-mailbox.gob"
+#line 75 "mn-maildir-mailbox.gob"
gboolean is = FALSE;
@@ -210,26 +218,26 @@ ___3_mn_maildir_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
return is;
}}
-#line 214 "mn-maildir-mailbox.c"
+#line 222 "mn-maildir-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
static void
___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
-#line 221 "mn-maildir-mailbox.c"
+#line 229 "mn-maildir-mailbox.c"
#define PARENT_HANDLER(___self) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___self); }
{
#define __GOB_FUNCTION__ "MN:Maildir:Mailbox::impl_threaded_check"
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 91 "mn-maildir-mailbox.gob"
+#line 99 "mn-maildir-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 231 "mn-maildir-mailbox.c"
+#line 239 "mn-maildir-mailbox.c"
{
-#line 93 "mn-maildir-mailbox.gob"
+#line 101 "mn-maildir-mailbox.gob"
GnomeVFSURI *new_uri;
GnomeVFSResult result;
@@ -237,10 +245,12 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
GnomeVFSDirectoryHandle *handle;
GnomeVFSFileInfo *file_info;
gboolean has_new = FALSE;
+#ifdef WITH_MIME
+ GSList *messages = NULL;
+#endif
new_uri = gnome_vfs_uri_append_path(self->uri->vfs, "new");
result = gnome_vfs_directory_open_from_uri(&handle, new_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
- gnome_vfs_uri_unref(new_uri);
if (result != GNOME_VFS_OK)
{
@@ -252,18 +262,27 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
- return;
+ goto end;
}
file_info = gnome_vfs_file_info_new();
while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
- {
- if (file_info->name[0] != '.')
- {
- has_new = TRUE;
- break;
- }
- }
+ if (file_info->name[0] != '.')
+ {
+#ifdef WITH_MIME
+ GnomeVFSURI *message_uri;
+#endif /* WITH_MIME */
+
+ has_new = TRUE;
+
+#ifdef WITH_MIME
+ message_uri = gnome_vfs_uri_append_file_name(new_uri, file_info->name);
+ messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+ gnome_vfs_uri_unref(message_uri);
+#else /* WITH_MIME */
+ break;
+#endif
+ }
gnome_vfs_file_info_unref(file_info);
close_result = gnome_vfs_directory_close(handle);
@@ -272,7 +291,12 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
{
if (close_result == GNOME_VFS_OK)
- mn_mailbox_set_has_new(self, has_new);
+ {
+ mn_mailbox_set_has_new(self, has_new);
+#ifdef WITH_MIME
+ mn_mailbox_set_messages(self, messages);
+#endif /* WITH_MIME */
+ }
else
mn_mailbox_set_error(self, _("unable to close folder \"new\": %s"), gnome_vfs_result_to_string(close_result));
}
@@ -282,7 +306,14 @@ ___4_mn_maildir_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+ mn_g_object_slist_free(messages);
+#endif
+
+ end:
+ gnome_vfs_uri_unref(new_uri);
}}
-#line 287 "mn-maildir-mailbox.c"
+#line 318 "mn-maildir-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
diff --git a/src/mn-maildir-mailbox.gob b/src/mn-maildir-mailbox.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -25,6 +27,9 @@
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
%}
class MN:Maildir:Mailbox from MN:Mailbox
@@ -52,6 +57,9 @@ class MN:Maildir:Mailbox from MN:Mailbox
new_uri,
GNOME_VFS_MONITOR_DIRECTORY,
MN_MAILBOX_MONITOR_EVENT_DELETED
+#ifdef WITH_MIME
+ | MN_MAILBOX_MONITOR_EVENT_CHANGED
+#endif
| MN_MAILBOX_MONITOR_EVENT_CREATED);
gdk_flush();
@@ -97,10 +105,12 @@ class MN:Maildir:Mailbox from MN:Mailbox
GnomeVFSDirectoryHandle *handle;
GnomeVFSFileInfo *file_info;
gboolean has_new = FALSE;
+#ifdef WITH_MIME
+ GSList *messages = NULL;
+#endif
new_uri = gnome_vfs_uri_append_path(self->uri->vfs, "new");
result = gnome_vfs_directory_open_from_uri(&handle, new_uri, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
- gnome_vfs_uri_unref(new_uri);
if (result != GNOME_VFS_OK)
{
@@ -112,18 +122,27 @@ class MN:Maildir:Mailbox from MN:Mailbox
gdk_flush();
GDK_THREADS_LEAVE();
- return;
+ goto end;
}
file_info = gnome_vfs_file_info_new();
while ((result = gnome_vfs_directory_read_next(handle, file_info)) == GNOME_VFS_OK)
- {
- if (file_info->name[0] != '.')
- {
- has_new = TRUE;
- break;
- }
- }
+ if (file_info->name[0] != '.')
+ {
+#ifdef WITH_MIME
+ GnomeVFSURI *message_uri;
+#endif /* WITH_MIME */
+
+ has_new = TRUE;
+
+#ifdef WITH_MIME
+ message_uri = gnome_vfs_uri_append_file_name(new_uri, file_info->name);
+ messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+ gnome_vfs_uri_unref(message_uri);
+#else /* WITH_MIME */
+ break;
+#endif
+ }
gnome_vfs_file_info_unref(file_info);
close_result = gnome_vfs_directory_close(handle);
@@ -132,7 +151,12 @@ class MN:Maildir:Mailbox from MN:Mailbox
if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
{
if (close_result == GNOME_VFS_OK)
- mn_mailbox_set_has_new(self, has_new);
+ {
+ mn_mailbox_set_has_new(self, has_new);
+#ifdef WITH_MIME
+ mn_mailbox_set_messages(self, messages);
+#endif /* WITH_MIME */
+ }
else
mn_mailbox_set_error(self, _("unable to close folder \"new\": %s"), gnome_vfs_result_to_string(close_result));
}
@@ -142,5 +166,12 @@ class MN:Maildir:Mailbox from MN:Mailbox
gdk_flush();
GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+ mn_g_object_slist_free(messages);
+#endif
+
+ end:
+ gnome_vfs_uri_unref(new_uri);
}
}
diff --git a/src/mn-maildir-mailbox.h b/src/mn-maildir-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-main.c b/src/mn-main.c
@@ -21,11 +21,17 @@
#include <signal.h>
#include <gnome.h>
#include <libgnomevfs/gnome-vfs.h>
+#ifdef WITH_MIME
+#include <gmime/gmime.h>
+#include "mn-gmime-stream-vfs.h"
+#endif
#include "mn-conf.h"
#include "mn-util.h"
#include "mn-stock.h"
#include "mn-automation.h"
#include "mn-shell.h"
+#include "mn-pending-mailbox.h"
+#include "mn-unsupported-mailbox.h"
/*** cpp *********************************************************************/
@@ -47,6 +53,8 @@ static void mn_main_info_log_cb (const char *log_domain,
const char *message,
gpointer user_data);
+static void mn_main_init_classes (void);
+
/*** implementation **********************************************************/
static BonoboObject *
@@ -65,21 +73,25 @@ mn_main_list_features (void)
{
GString *backends;
GString *features;
- const GType *types;
int i;
+#define ADD_FEATURE(string, feature) \
+ { \
+ if (*(string)->str) \
+ g_string_append((string), ", "); \
+ g_string_append((string), (feature)); \
+ }
+
backends = g_string_new(NULL);
- types = mn_mailbox_get_types();
- for (i = 0; types[i]; i++)
+ for (i = 0; mn_mailbox_types[i]; i++)
{
MNMailboxClass *class;
- class = g_type_class_ref(types[i]);
- if (*backends->str)
- g_string_append(backends, ", ");
- g_string_append(backends, class->format);
- g_type_class_unref(class);
+ class = g_type_class_peek(mn_mailbox_types[i]);
+ g_return_if_fail(class != NULL);
+
+ ADD_FEATURE(backends, class->format);
}
g_print(_("Compiled-in mailbox backends: %s\n"), backends->str);
@@ -87,18 +99,17 @@ mn_main_list_features (void)
features = g_string_new(NULL);
#ifdef WITH_SSL
- g_string_append(features, "SSL/TLS");
-#endif /* WITH_SSL */
+ ADD_FEATURE(features, "SSL/TLS");
+#endif
#ifdef WITH_SASL
- if (*features->str)
- g_string_append(features, ", ");
- g_string_append(features, "SASL");
-#endif /* WITH_SASL */
+ ADD_FEATURE(features, "SASL");
+#endif
#ifdef WITH_IPV6
- if (*features->str)
- g_string_append(features, ", ");
- g_string_append(features, "IPv6");
-#endif /* WITH_IPV6 */
+ ADD_FEATURE(features, "IPv6");
+#endif
+#ifdef WITH_MIME
+ ADD_FEATURE(features, "MIME");
+#endif
g_print(_("Compiled-in features: %s\n"), features->str);
g_string_free(features, TRUE);
@@ -114,12 +125,34 @@ mn_main_info_log_cb (const char *log_domain,
g_log_default_handler(log_domain, log_level, message, user_data);
}
+static void
+mn_main_init_classes (void)
+{
+ int i;
+
+ g_type_class_ref(MN_TYPE_AUTOMATION);
+#ifdef WITH_MIME
+ g_type_class_ref(MN_TYPE_GMIME_STREAM_VFS);
+#endif
+ g_type_class_ref(MN_TYPE_MAILBOX);
+ for (i = 0; mn_mailbox_types[i]; i++)
+ g_type_class_ref(mn_mailbox_types[i]);
+ g_type_class_ref(MN_TYPE_MAILBOXES);
+ g_type_class_ref(MN_TYPE_MESSAGE);
+ g_type_class_ref(MN_TYPE_PENDING_MAILBOX);
+ g_type_class_ref(MN_TYPE_SHELL);
+ g_type_class_ref(MN_TYPE_UNSUPPORTED_MAILBOX);
+ g_type_class_ref(MN_TYPE_URI);
+}
+
int
main (int argc, char **argv)
{
gboolean arg_list_features = FALSE;
+ gboolean arg_display_mail_summary = FALSE;
gboolean arg_display_properties = FALSE;
gboolean arg_display_about = FALSE;
+ gboolean arg_close_popup = FALSE;
gboolean arg_update = FALSE;
gboolean arg_report = FALSE;
gboolean arg_unset_obsolete_configuration = FALSE;
@@ -143,6 +176,15 @@ main (int argc, char **argv)
NULL
},
{
+ "display-mail-summary",
+ 'm',
+ POPT_ARG_NONE,
+ &arg_display_mail_summary,
+ 0,
+ N_("Display the mail summary dialog"),
+ NULL
+ },
+ {
"display-properties",
'p',
POPT_ARG_NONE,
@@ -161,6 +203,15 @@ main (int argc, char **argv)
NULL
},
{
+ "close-popup",
+ 'c',
+ POPT_ARG_NONE,
+ &arg_close_popup,
+ 0,
+ N_("Close the mail summary popup"),
+ NULL
+ },
+ {
"update",
'u',
POPT_ARG_NONE,
@@ -255,15 +306,25 @@ main (int argc, char **argv)
case Bonobo_ACTIVATION_REG_SUCCESS:
automation = bonobo_activation_activate_from_id(AUTOMATION_IID, 0, NULL, &ev);
if (CORBA_Object_is_nil(automation, &ev))
- mn_fatal_error_dialog(_("Bonobo could not locate the automation object. Please check your Mail Notification installation."));
+ mn_fatal_error_dialog(NULL, _("Bonobo could not locate the automation object. Please check your Mail Notification installation."));
if (result != Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
{
if (! gnome_vfs_init())
- mn_fatal_error_dialog(_("Unable to initialize the GnomeVFS library."));
+ mn_fatal_error_dialog(NULL, _("Unable to initialize the GnomeVFS library."));
+#ifdef WITH_MIME
+ g_mime_init(0);
+#endif
mn_conf_init();
- mn_shell = mn_shell_new();
+ /*
+ * Work around
+ * http://bugzilla.gnome.org/show_bug.cgi?id=64764:
+ * initialize our non GTK-based classes before any thread is
+ * created.
+ */
+ mn_main_init_classes();
+ mn_shell_new();
if (! eel_gconf_get_boolean(MN_CONF_ALREADY_RUN))
{
@@ -273,10 +334,14 @@ main (int argc, char **argv)
}
}
+ if (arg_display_mail_summary)
+ GNOME_MNAutomation_displayMailSummary(automation, &ev);
if (arg_display_properties)
GNOME_MNAutomation_displayProperties(automation, &ev);
if (arg_display_about)
GNOME_MNAutomation_displayAbout(automation, &ev);
+ if (arg_close_popup)
+ GNOME_MNAutomation_closePopup(automation, &ev);
if (result == Bonobo_ACTIVATION_REG_ALREADY_ACTIVE)
{
@@ -294,8 +359,10 @@ main (int argc, char **argv)
CORBA_free(report);
}
- if (! (arg_display_properties
+ if (! (arg_display_mail_summary
+ || arg_display_properties
|| arg_display_about
+ || arg_close_popup
|| arg_update
|| arg_report))
g_message(_("Mail Notification is already running"));
@@ -305,11 +372,11 @@ main (int argc, char **argv)
break;
case Bonobo_ACTIVATION_REG_NOT_LISTED:
- mn_fatal_error_dialog(_("Bonobo could not locate the GNOME_MailNotification_Automation.server file. Please check your Mail Notification installation."));
+ mn_fatal_error_dialog(NULL, _("Bonobo could not locate the GNOME_MailNotification_Automation.server file. Please check your Mail Notification installation."));
break;
case Bonobo_ACTIVATION_REG_ERROR:
- mn_fatal_error_dialog(_("Bonobo was unable to register the automation server. Please check your Mail Notification installation."));
+ mn_fatal_error_dialog(NULL, _("Bonobo was unable to register the automation server. Please check your Mail Notification installation."));
break;
default:
diff --git a/src/mn-mbox-mailbox-private.h b/src/mn-mbox-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MBOX_MAILBOX_PRIVATE_H__
#define __MN_MBOX_MAILBOX_PRIVATE_H__
@@ -10,13 +10,13 @@ extern "C" {
#endif /* __cplusplus */
-#line 22 "mn-mbox-mailbox.gob"
+#line 24 "mn-mbox-mailbox.gob"
#include <libgnomevfs/gnome-vfs.h>
#line 18 "mn-mbox-mailbox-private.h"
struct _MNmboxMailboxPrivate {
-#line 36 "mn-mbox-mailbox.gob"
+#line 43 "mn-mbox-mailbox.gob"
time_t last_mtime;
#line 22 "mn-mbox-mailbox-private.h"
};
diff --git a/src/mn-mbox-mailbox.c b/src/mn-mbox-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:00 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -21,7 +21,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 25 "mn-mbox-mailbox.gob"
+#line 27 "mn-mbox-mailbox.gob"
#include "config.h"
#include <string.h>
@@ -29,8 +29,13 @@
#include <gdk/gdk.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#endif /* WITH_MIME */
+#include "mn-util.h"
-#line 34 "mn-mbox-mailbox.c"
+#line 39 "mn-mbox-mailbox.c"
/* self casting macros */
#define SELF(x) MN_MBOX_MAILBOX(x)
#define SELF_CONST(x) MN_MBOX_MAILBOX_CONST(x)
@@ -101,11 +106,10 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:mbox:Mailbox::finalize"
- MNmboxMailbox *self G_GNUC_UNUSED = MN_MBOX_MAILBOX (obj_self);
- gpointer priv = self->_priv;
+ MNmboxMailbox *self G_GNUC_UNUSED = MN_MBOX_MAILBOX (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
- g_free (priv);
}
#undef __GOB_FUNCTION__
@@ -113,44 +117,46 @@ static void
mn_mbox_mailbox_init (MNmboxMailbox * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:mbox:Mailbox::init"
- o->_priv = g_new0 (MNmboxMailboxPrivate, 1);
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNmboxMailboxPrivate);
}
#undef __GOB_FUNCTION__
-#line 38 "mn-mbox-mailbox.gob"
+#line 45 "mn-mbox-mailbox.gob"
static void
mn_mbox_mailbox_class_init (MNmboxMailboxClass * class G_GNUC_UNUSED)
-#line 123 "mn-mbox-mailbox.c"
+#line 127 "mn-mbox-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:mbox:Mailbox::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+
+ g_type_class_add_private(class,sizeof(MNmboxMailboxPrivate));
MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 43 "mn-mbox-mailbox.gob"
+#line 50 "mn-mbox-mailbox.gob"
g_object_class->constructor = ___2_mn_mbox_mailbox_constructor;
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
mn_mailbox_class->impl_is = ___3_mn_mbox_mailbox_impl_is;
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
mn_mailbox_class->impl_threaded_check = ___4_mn_mbox_mailbox_impl_threaded_check;
-#line 137 "mn-mbox-mailbox.c"
+#line 143 "mn-mbox-mailbox.c"
g_object_class->finalize = ___finalize;
{
-#line 39 "mn-mbox-mailbox.gob"
+#line 46 "mn-mbox-mailbox.gob"
MN_MAILBOX_CLASS(class)->format = "mbox";
-#line 144 "mn-mbox-mailbox.c"
+#line 150 "mn-mbox-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 43 "mn-mbox-mailbox.gob"
+#line 50 "mn-mbox-mailbox.gob"
static GObject *
___2_mn_mbox_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 154 "mn-mbox-mailbox.c"
+#line 160 "mn-mbox-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -158,7 +164,7 @@ ___2_mn_mbox_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
{
#define __GOB_FUNCTION__ "MN:mbox:Mailbox::constructor"
{
-#line 45 "mn-mbox-mailbox.gob"
+#line 52 "mn-mbox-mailbox.gob"
GObject *object;
MNMailbox *self;
@@ -180,27 +186,27 @@ ___2_mn_mbox_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
return object;
}}
-#line 184 "mn-mbox-mailbox.c"
+#line 190 "mn-mbox-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
static gboolean
___3_mn_mbox_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 191 "mn-mbox-mailbox.c"
+#line 197 "mn-mbox-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:mbox:Mailbox::impl_is"
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 67 "mn-mbox-mailbox.gob"
+#line 74 "mn-mbox-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 202 "mn-mbox-mailbox.c"
+#line 208 "mn-mbox-mailbox.c"
{
-#line 69 "mn-mbox-mailbox.gob"
+#line 76 "mn-mbox-mailbox.gob"
gboolean is = FALSE;
@@ -239,26 +245,26 @@ ___3_mn_mbox_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
return is;
}}
-#line 243 "mn-mbox-mailbox.c"
+#line 249 "mn-mbox-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
static void
___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 250 "mn-mbox-mailbox.c"
+#line 256 "mn-mbox-mailbox.c"
#define PARENT_HANDLER(___mailbox) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___mailbox); }
{
#define __GOB_FUNCTION__ "MN:mbox:Mailbox::impl_threaded_check"
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
g_return_if_fail (mailbox != NULL);
-#line 108 "mn-mbox-mailbox.gob"
+#line 115 "mn-mbox-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 260 "mn-mbox-mailbox.c"
+#line 266 "mn-mbox-mailbox.c"
{
-#line 110 "mn-mbox-mailbox.gob"
+#line 117 "mn-mbox-mailbox.gob"
Self *self = SELF(mailbox);
gboolean check = TRUE;
@@ -288,6 +294,49 @@ ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
result = gnome_vfs_open_uri(&handle, mailbox->uri->vfs, GNOME_VFS_OPEN_READ);
if (result == GNOME_VFS_OK)
{
+#ifdef WITH_MIME
+ GMimeStream *stream;
+ GMimeParser *parser;
+ GSList *messages = NULL;
+
+ stream = mn_gmime_stream_vfs_new(handle, mailbox->uri->text);
+ parser = g_mime_parser_new_with_stream(stream);
+ g_object_unref(stream);
+
+ g_mime_parser_set_scan_from(parser, TRUE);
+
+ while (! g_mime_parser_eos(parser))
+ {
+ GMimeMessage *mime_message;
+
+ mime_message = g_mime_parser_construct_message(parser);
+ if (mime_message)
+ {
+ const char *status;
+
+ status = g_mime_message_get_header(mime_message, "Status");
+ if (! (status && (strchr(status, 'O') || strchr(status, 'R'))))
+ messages = g_slist_append(messages, mn_message_new_from_mime_message(mailbox->uri, mime_message));
+
+ g_object_unref(mime_message);
+ }
+ }
+
+ g_object_unref(parser);
+ gnome_vfs_close(handle);
+
+ GDK_THREADS_ENTER();
+
+ mn_mailbox_set_has_new(mailbox, messages != NULL);
+ mn_mailbox_set_messages(mailbox, messages);
+
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ mn_g_object_slist_free(messages);
+
+#else /* WITH_MIME */
+
MNVFSReadLineContext *context = NULL;
const char *line;
gboolean in_header = FALSE;
@@ -324,6 +373,7 @@ ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
+#endif /* WITH_MIME */
}
else
{
@@ -339,6 +389,6 @@ ___4_mn_mbox_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
}}
-#line 343 "mn-mbox-mailbox.c"
+#line 393 "mn-mbox-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
diff --git a/src/mn-mbox-mailbox.gob b/src/mn-mbox-mailbox.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -29,6 +31,11 @@
#include <gdk/gdk.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+#endif /* WITH_MIME */
+#include "mn-util.h"
%}
class MN:mbox:Mailbox from MN:Mailbox
@@ -136,6 +143,49 @@ class MN:mbox:Mailbox from MN:Mailbox
result = gnome_vfs_open_uri(&handle, mailbox->uri->vfs, GNOME_VFS_OPEN_READ);
if (result == GNOME_VFS_OK)
{
+#ifdef WITH_MIME
+ GMimeStream *stream;
+ GMimeParser *parser;
+ GSList *messages = NULL;
+
+ stream = mn_gmime_stream_vfs_new(handle, mailbox->uri->text);
+ parser = g_mime_parser_new_with_stream(stream);
+ g_object_unref(stream);
+
+ g_mime_parser_set_scan_from(parser, TRUE);
+
+ while (! g_mime_parser_eos(parser))
+ {
+ GMimeMessage *mime_message;
+
+ mime_message = g_mime_parser_construct_message(parser);
+ if (mime_message)
+ {
+ const char *status;
+
+ status = g_mime_message_get_header(mime_message, "Status");
+ if (! (status && (strchr(status, 'O') || strchr(status, 'R'))))
+ messages = g_slist_append(messages, mn_message_new_from_mime_message(mailbox->uri, mime_message));
+
+ g_object_unref(mime_message);
+ }
+ }
+
+ g_object_unref(parser);
+ gnome_vfs_close(handle);
+
+ GDK_THREADS_ENTER();
+
+ mn_mailbox_set_has_new(mailbox, messages != NULL);
+ mn_mailbox_set_messages(mailbox, messages);
+
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ mn_g_object_slist_free(messages);
+
+#else /* WITH_MIME */
+
MNVFSReadLineContext *context = NULL;
const char *line;
gboolean in_header = FALSE;
@@ -172,6 +222,7 @@ class MN:mbox:Mailbox from MN:Mailbox
gdk_flush();
GDK_THREADS_LEAVE();
+#endif /* WITH_MIME */
}
else
{
diff --git a/src/mn-mbox-mailbox.h b/src/mn-mbox-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-message-label-private.h b/src/mn-message-label-private.h
@@ -0,0 +1,24 @@
+/* Generated by GOB (v2.0.10) (do not edit directly) */
+
+#ifndef __MN_MESSAGE_LABEL_PRIVATE_H__
+#define __MN_MESSAGE_LABEL_PRIVATE_H__
+
+#include "mn-message-label.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+struct _MNMessageLabelPrivate {
+#line 33 "mn-message-label.gob"
+ unsigned int update_timeout_id;
+#line 35 "mn-message-label.gob"
+ MNMessage * message;
+#line 18 "mn-message-label-private.h"
+};
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-message-label.c b/src/mn-message-label.c
@@ -0,0 +1,468 @@
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
+ (do not edit directly) */
+
+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
+
+#define GOB_VERSION_MAJOR 2
+#define GOB_VERSION_MINOR 0
+#define GOB_VERSION_PATCHLEVEL 10
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-message-label.h"
+
+#include "mn-message-label-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 25 "mn-message-label.gob"
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include "mn-util.h"
+
+#line 33 "mn-message-label.c"
+/* self casting macros */
+#define SELF(x) MN_MESSAGE_LABEL(x)
+#define SELF_CONST(x) MN_MESSAGE_LABEL_CONST(x)
+#define IS_SELF(x) MN_IS_MESSAGE_LABEL(x)
+#define TYPE_SELF MN_TYPE_MESSAGE_LABEL
+#define SELF_CLASS(x) MN_MESSAGE_LABEL_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_MESSAGE_LABEL_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNMessageLabel Self;
+typedef MNMessageLabelClass SelfClass;
+
+/* here are local prototypes */
+static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
+static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
+static void mn_message_label_init (MNMessageLabel * o) G_GNUC_UNUSED;
+static void mn_message_label_class_init (MNMessageLabelClass * c) G_GNUC_UNUSED;
+static GObject * ___1_mn_message_label_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
+static void ___2_mn_message_label_finalize (GObject * object) G_GNUC_UNUSED;
+static void mn_message_label_update (MNMessageLabel * self) G_GNUC_UNUSED;
+static gboolean mn_message_label_update_cb (gpointer data) G_GNUC_UNUSED;
+static void mn_message_label_append_row (GString * string, const char * label, const char * value, gboolean newline) G_GNUC_UNUSED;
+static char * mn_message_label_format_delay (time_t delay) G_GNUC_UNUSED;
+
+enum {
+ PROP_0,
+ PROP_MESSAGE
+};
+
+/* pointer to the class of our parent */
+static GtkLabelClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_update mn_message_label_update
+#define self_update_cb mn_message_label_update_cb
+#define self_append_row mn_message_label_append_row
+#define self_format_delay mn_message_label_format_delay
+#define self_new mn_message_label_new
+GType
+mn_message_label_get_type (void)
+{
+ static GType type = 0;
+
+ if ___GOB_UNLIKELY(type == 0) {
+ static const GTypeInfo info = {
+ sizeof (MNMessageLabelClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mn_message_label_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL /* class_data */,
+ sizeof (MNMessageLabel),
+ 0 /* n_preallocs */,
+ (GInstanceInitFunc) mn_message_label_init,
+ NULL
+ };
+
+ type = g_type_register_static (GTK_TYPE_LABEL, "MNMessageLabel", &info, (GTypeFlags)0);
+ }
+
+ return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNMessageLabel *)g_object_new(mn_message_label_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNMessageLabel * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNMessageLabel *
+GET_NEW_VARG (const char *first, ...)
+{
+ MNMessageLabel *ret;
+ va_list ap;
+ va_start (ap, first);
+ ret = (MNMessageLabel *)g_object_new_valist (mn_message_label_get_type (), first, ap);
+ va_end (ap);
+ return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::dispose"
+ MNMessageLabel *self G_GNUC_UNUSED = MN_MESSAGE_LABEL (obj_self);
+ if (G_OBJECT_CLASS (parent_class)->dispose) \
+ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 35 "mn-message-label.gob"
+ if(self->_priv->message) { g_object_unref ((gpointer) self->_priv->message); self->_priv->message = NULL; }
+#line 125 "mn-message-label.c"
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::finalize"
+ MNMessageLabel *self G_GNUC_UNUSED = MN_MESSAGE_LABEL (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 56 "mn-message-label.gob"
+ ___2_mn_message_label_finalize(obj_self);
+#line 138 "mn-message-label.c"
+}
+#undef __GOB_FUNCTION__
+
+static void
+mn_message_label_init (MNMessageLabel * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::init"
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNMessageLabelPrivate);
+}
+#undef __GOB_FUNCTION__
+static void
+mn_message_label_class_init (MNMessageLabelClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::class_init"
+ GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+ g_type_class_add_private(c,sizeof(MNMessageLabelPrivate));
+
+ parent_class = g_type_class_ref (GTK_TYPE_LABEL);
+
+#line 40 "mn-message-label.gob"
+ g_object_class->constructor = ___1_mn_message_label_constructor;
+#line 56 "mn-message-label.gob"
+ g_object_class->finalize = ___finalize;
+#line 163 "mn-message-label.c"
+ g_object_class->dispose = ___dispose;
+ g_object_class->get_property = ___object_get_property;
+ g_object_class->set_property = ___object_set_property;
+ {
+ GParamSpec *param_spec;
+
+ param_spec = g_param_spec_object
+ ("message" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ MN_TYPE_MESSAGE /* object_type */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_MESSAGE,
+ param_spec);
+ }
+}
+#undef __GOB_FUNCTION__
+
+static void
+___object_set_property (GObject *object,
+ guint property_id,
+ const GValue *VAL G_GNUC_UNUSED,
+ GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Message:Label::set_property"
+{
+ MNMessageLabel *self G_GNUC_UNUSED;
+
+ self = MN_MESSAGE_LABEL (object);
+
+ switch (property_id) {
+ case PROP_MESSAGE:
+ {
+#line 36 "mn-message-label.gob"
+{ GObject *___old = (GObject *)self->_priv->message; self->_priv->message = (MNMessage *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
+#line 199 "mn-message-label.c"
+ }
+ break;
+ default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+# undef G_STRLOC
+# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+#undef __GOB_FUNCTION__
+
+static void
+___object_get_property (GObject *object,
+ guint property_id,
+ GValue *VAL G_GNUC_UNUSED,
+ GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Message:Label::get_property"
+{
+ MNMessageLabel *self G_GNUC_UNUSED;
+
+ self = MN_MESSAGE_LABEL (object);
+
+ switch (property_id) {
+ case PROP_MESSAGE:
+ {
+#line 36 "mn-message-label.gob"
+g_value_set_object (VAL, (gpointer)self->_priv->message);
+#line 230 "mn-message-label.c"
+ }
+ break;
+ default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+# undef G_STRLOC
+# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 40 "mn-message-label.gob"
+static GObject *
+___1_mn_message_label_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
+#line 250 "mn-message-label.c"
+#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
+ ((G_OBJECT_CLASS(parent_class)->constructor)? \
+ (* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
+ ((GObject * )0))
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::constructor"
+{
+#line 42 "mn-message-label.gob"
+
+ GObject *object;
+ Self *self;
+
+ object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+ self = SELF(object);
+
+ self_update(self);
+ if (selfp->message->sent_time)
+ selfp->update_timeout_id = g_timeout_add(500, self_update_cb, self);
+
+ return object;
+ }}
+#line 272 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 56 "mn-message-label.gob"
+static void
+___2_mn_message_label_finalize (GObject * object G_GNUC_UNUSED)
+#line 279 "mn-message-label.c"
+#define PARENT_HANDLER(___object) \
+ { if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::finalize"
+#line 56 "mn-message-label.gob"
+ g_return_if_fail (object != NULL);
+#line 56 "mn-message-label.gob"
+ g_return_if_fail (G_IS_OBJECT (object));
+#line 289 "mn-message-label.c"
+{
+#line 58 "mn-message-label.gob"
+
+ Self *self = SELF(object);
+
+ if (selfp->update_timeout_id)
+ g_source_remove(selfp->update_timeout_id);
+
+ PARENT_HANDLER(object);
+ }}
+#line 300 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+#undef PARENT_HANDLER
+
+#line 67 "mn-message-label.gob"
+static void
+mn_message_label_update (MNMessageLabel * self)
+#line 307 "mn-message-label.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::update"
+#line 67 "mn-message-label.gob"
+ g_return_if_fail (self != NULL);
+#line 67 "mn-message-label.gob"
+ g_return_if_fail (MN_IS_MESSAGE_LABEL (self));
+#line 314 "mn-message-label.c"
+{
+#line 69 "mn-message-label.gob"
+
+ GString *string;
+ const char *current_label;
+
+ string = g_string_new(NULL);
+ self_append_row(string, _("Mailbox"), selfp->message->mailbox_uri->human_readable, TRUE);
+
+ if (selfp->message->error)
+ self_append_row(string, _("Unreadable message"), selfp->message->error, FALSE);
+ else
+ {
+ char *ago = NULL;
+
+ if (selfp->message->sent_time)
+ {
+ time_t now;
+
+ now = mn_time();
+ if (now > 0)
+ {
+ time_t diff;
+
+ diff = now - selfp->message->sent_time;
+ if (diff >= 0)
+ ago = self_format_delay(diff);
+ }
+ }
+
+ self_append_row(string, _("From"), selfp->message->from, TRUE);
+ self_append_row(string, _("Subject"), selfp->message->subject, ago != NULL);
+
+ if (ago)
+ {
+ self_append_row(string, _("Sent"), ago, FALSE);
+ g_free(ago);
+ }
+ }
+
+ current_label = gtk_label_get_label(GTK_LABEL(self));
+ if (strcmp(current_label, string->str))
+ gtk_label_set_markup(GTK_LABEL(self), string->str);
+ g_string_free(string, TRUE);
+ }}
+#line 360 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+
+#line 113 "mn-message-label.gob"
+static gboolean
+mn_message_label_update_cb (gpointer data)
+#line 366 "mn-message-label.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::update_cb"
+#line 113 "mn-message-label.gob"
+ g_return_val_if_fail (data != NULL, (gboolean )0);
+#line 371 "mn-message-label.c"
+{
+#line 115 "mn-message-label.gob"
+
+ Self *self = data;
+
+ GDK_THREADS_ENTER();
+ self_update(self);
+ GDK_THREADS_LEAVE();
+
+ return TRUE; /* continue */
+ }}
+#line 383 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+
+#line 125 "mn-message-label.gob"
+static void
+mn_message_label_append_row (GString * string, const char * label, const char * value, gboolean newline)
+#line 389 "mn-message-label.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::append_row"
+#line 125 "mn-message-label.gob"
+ g_return_if_fail (string != NULL);
+#line 125 "mn-message-label.gob"
+ g_return_if_fail (label != NULL);
+#line 125 "mn-message-label.gob"
+ g_return_if_fail (value != NULL);
+#line 398 "mn-message-label.c"
+{
+#line 130 "mn-message-label.gob"
+
+ char *markup;
+
+ markup = g_markup_printf_escaped("<span weight=\"bold\">%s:</span> ", label);
+ g_string_append(string, markup);
+ g_free(markup);
+
+ markup = g_markup_escape_text(value, -1);
+ g_string_append(string, markup);
+ g_free(markup);
+
+ if (newline)
+ g_string_append_c(string, '\n');
+ }}
+#line 415 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+
+#line 145 "mn-message-label.gob"
+static char *
+mn_message_label_format_delay (time_t delay)
+#line 421 "mn-message-label.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::format_delay"
+{
+#line 147 "mn-message-label.gob"
+
+ char *str;
+
+ if (delay < 60)
+ str = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", delay), delay);
+ else if (delay < 3600)
+ {
+ int minutes = delay / 60;
+ str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
+ }
+ else if (delay < 86400)
+ {
+ int hours = delay / 3600;
+ str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
+ }
+ else
+ {
+ int days = delay / 86400;
+ str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
+ }
+
+ return str;
+ }}
+#line 449 "mn-message-label.c"
+#undef __GOB_FUNCTION__
+
+#line 171 "mn-message-label.gob"
+GtkWidget *
+mn_message_label_new (MNMessage * message)
+#line 455 "mn-message-label.c"
+{
+#define __GOB_FUNCTION__ "MN:Message:Label::new"
+#line 171 "mn-message-label.gob"
+ g_return_val_if_fail (message != NULL, (GtkWidget * )0);
+#line 171 "mn-message-label.gob"
+ g_return_val_if_fail (MN_IS_MESSAGE (message), (GtkWidget * )0);
+#line 462 "mn-message-label.c"
+{
+#line 173 "mn-message-label.gob"
+
+ return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_LABEL_PROP_MESSAGE(G_OBJECT(message)), NULL));
+ }}
+#line 468 "mn-message-label.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-message-label.gob b/src/mn-message-label.gob
@@ -0,0 +1,176 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+requires 2.0.10
+
+%headertop{
+#include <gtk/gtk.h>
+#include "mn-message.h"
+%}
+%{
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include "mn-util.h"
+%}
+
+class MN:Message:Label from Gtk:Label
+{
+ private unsigned int update_timeout_id;
+
+ private MNMessage *message unrefwith g_object_unref;
+ property OBJECT message (object_type = MN:Message,
+ flags = CONSTRUCT_ONLY,
+ link);
+
+ override (G:Object) GObject *
+ constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_params)
+ {
+ GObject *object;
+ Self *self;
+
+ object = PARENT_HANDLER(type, n_construct_properties, construct_params);
+ self = SELF(object);
+
+ self_update(self);
+ if (selfp->message->sent_time)
+ selfp->update_timeout_id = g_timeout_add(500, self_update_cb, self);
+
+ return object;
+ }
+
+ override (G:Object) void
+ finalize (G:Object *object (check null type))
+ {
+ Self *self = SELF(object);
+
+ if (selfp->update_timeout_id)
+ g_source_remove(selfp->update_timeout_id);
+
+ PARENT_HANDLER(object);
+ }
+
+ private void
+ update (self)
+ {
+ GString *string;
+ const char *current_label;
+
+ string = g_string_new(NULL);
+ self_append_row(string, _("Mailbox"), selfp->message->mailbox_uri->human_readable, TRUE);
+
+ if (selfp->message->error)
+ self_append_row(string, _("Unreadable message"), selfp->message->error, FALSE);
+ else
+ {
+ char *ago = NULL;
+
+ if (selfp->message->sent_time)
+ {
+ time_t now;
+
+ now = mn_time();
+ if (now > 0)
+ {
+ time_t diff;
+
+ diff = now - selfp->message->sent_time;
+ if (diff >= 0)
+ ago = self_format_delay(diff);
+ }
+ }
+
+ self_append_row(string, _("From"), selfp->message->from, TRUE);
+ self_append_row(string, _("Subject"), selfp->message->subject, ago != NULL);
+
+ if (ago)
+ {
+ self_append_row(string, _("Sent"), ago, FALSE);
+ g_free(ago);
+ }
+ }
+
+ current_label = gtk_label_get_label(GTK_LABEL(self));
+ if (strcmp(current_label, string->str))
+ gtk_label_set_markup(GTK_LABEL(self), string->str);
+ g_string_free(string, TRUE);
+ }
+
+ private gboolean
+ update_cb (gpointer data (check null))
+ {
+ Self *self = data;
+
+ GDK_THREADS_ENTER();
+ self_update(self);
+ GDK_THREADS_LEAVE();
+
+ return TRUE; /* continue */
+ }
+
+ private void
+ append_row (GString *string (check null),
+ const char *label (check null),
+ const char *value (check null),
+ gboolean newline)
+ {
+ char *markup;
+
+ markup = g_markup_printf_escaped("<span weight=\"bold\">%s:</span> ", label);
+ g_string_append(string, markup);
+ g_free(markup);
+
+ markup = g_markup_escape_text(value, -1);
+ g_string_append(string, markup);
+ g_free(markup);
+
+ if (newline)
+ g_string_append_c(string, '\n');
+ }
+
+ private char *
+ format_delay (time_t delay)
+ {
+ char *str;
+
+ if (delay < 60)
+ str = g_strdup_printf(ngettext("%i second ago", "%i seconds ago", delay), delay);
+ else if (delay < 3600)
+ {
+ int minutes = delay / 60;
+ str = g_strdup_printf(ngettext("%i minute ago", "%i minutes ago", minutes), minutes);
+ }
+ else if (delay < 86400)
+ {
+ int hours = delay / 3600;
+ str = g_strdup_printf(ngettext("%i hour ago", "%i hours ago", hours), hours);
+ }
+ else
+ {
+ int days = delay / 86400;
+ str = g_strdup_printf(ngettext("%i day ago", "%i days ago", days), days);
+ }
+
+ return str;
+ }
+
+ public GtkWidget *
+ new (MN:Message *message (check null type))
+ {
+ return GTK_WIDGET(GET_NEW_VARG(MN_MESSAGE_LABEL_PROP_MESSAGE(G_OBJECT(message)), NULL));
+ }
+}
diff --git a/src/mn-message-label.h b/src/mn-message-label.h
@@ -0,0 +1,76 @@
+/* Generated by GOB (v2.0.10) (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <gtk/gtk.h>
+#include "mn-message.h"
+
+#ifndef __MN_MESSAGE_LABEL_H__
+#define __MN_MESSAGE_LABEL_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_MESSAGE_LABEL (mn_message_label_get_type())
+#define MN_MESSAGE_LABEL(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_label_get_type(), MNMessageLabel)
+#define MN_MESSAGE_LABEL_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_label_get_type(), MNMessageLabel const)
+#define MN_MESSAGE_LABEL_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_message_label_get_type(), MNMessageLabelClass)
+#define MN_IS_MESSAGE_LABEL(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_label_get_type ())
+
+#define MN_MESSAGE_LABEL_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_label_get_type(), MNMessageLabelClass)
+
+/* Private structure type */
+typedef struct _MNMessageLabelPrivate MNMessageLabelPrivate;
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_MESSAGE_LABEL__
+#define __TYPEDEF_MN_MESSAGE_LABEL__
+typedef struct _MNMessageLabel MNMessageLabel;
+#endif
+struct _MNMessageLabel {
+ GtkLabel __parent__;
+ /*< private >*/
+ MNMessageLabelPrivate *_priv;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNMessageLabelClass MNMessageLabelClass;
+struct _MNMessageLabelClass {
+ GtkLabelClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType mn_message_label_get_type (void);
+GtkWidget * mn_message_label_new (MNMessage * message);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MESSAGE_LABEL_PROP_MESSAGE(arg) "message", __extension__ ({GObject *z = (arg); z;})
+#define MN_MESSAGE_LABEL_GET_PROP_MESSAGE(arg) "message", __extension__ ({GObject **z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MESSAGE_LABEL_PROP_MESSAGE(arg) "message",(GObject *)(arg)
+#define MN_MESSAGE_LABEL_GET_PROP_MESSAGE(arg) "message",(GObject **)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-message-mime.c b/src/mn-message-mime.c
@@ -0,0 +1,158 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include <libgnomevfs/gnome-vfs.h>
+#include "mn-message-mime.h"
+#include "mn-gmime-stream-vfs.h"
+
+/*** functions ***************************************************************/
+
+static char *mn_message_mime_header_decode_text (const char *str);
+
+/*** implementation **********************************************************/
+
+static char *
+mn_message_mime_header_decode_text (const char *str)
+{
+ char *decoded;
+
+ g_return_val_if_fail(str != NULL, NULL);
+
+ decoded = g_mime_utils_header_decode_text(str);
+ if (g_utf8_validate(decoded, -1, NULL))
+ return decoded;
+ else
+ {
+ char *converted;
+
+ /* assume it is ISO8859-1 */
+ converted = g_convert(decoded, -1, "UTF-8", "ISO8859-1", NULL, NULL, NULL);
+ g_free(decoded);
+
+ return converted ? converted : g_strdup("");
+ }
+}
+
+MNMessage *
+mn_message_new_from_mime_message (MNURI *mailbox_uri,
+ GMimeMessage *mime_message)
+{
+ MNMessage *message;
+ const char *message_id;
+ time_t sent_time;
+ const char *from;
+ const char *subject;
+ char *decoded_from;
+ char *decoded_subject;
+
+ g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+ g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), NULL);
+
+ message_id = g_mime_message_get_message_id(mime_message);
+ g_mime_message_get_date(mime_message, &sent_time, NULL);
+ from = g_mime_message_get_sender(mime_message);
+ subject = g_mime_message_get_subject(mime_message);
+
+ decoded_from = from ? mn_message_mime_header_decode_text(from) : NULL;
+ decoded_subject = subject ? mn_message_mime_header_decode_text(subject) : NULL;
+
+ message = mn_message_new(mailbox_uri, NULL, sent_time, message_id, decoded_from, decoded_subject);
+
+ g_free(decoded_from);
+ g_free(decoded_subject);
+
+ return message;
+}
+
+MNMessage *
+mn_message_new_from_mime_stream (MNURI *mailbox_uri,
+ GMimeStream *mime_stream)
+{
+ GMimeParser *parser;
+ GMimeMessage *mime_message;
+ MNMessage *message;
+
+ g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+ g_return_val_if_fail(GMIME_IS_STREAM(mime_stream), NULL);
+
+ parser = g_mime_parser_new_with_stream(mime_stream);
+ mime_message = g_mime_parser_construct_message(parser);
+ g_object_unref(parser);
+
+ if (mime_message)
+ {
+ message = mn_message_new_from_mime_message(mailbox_uri, mime_message);
+ g_object_unref(mime_message);
+ }
+ else
+ message = mn_message_new_from_error(mailbox_uri, _("unable to parse MIME message"));
+
+ return message;
+}
+
+MNMessage *
+mn_message_new_from_uri (MNURI *mailbox_uri,
+ GnomeVFSURI *uri)
+{
+ GnomeVFSResult result;
+ GnomeVFSHandle *handle;
+ MNMessage *message;
+
+ g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+ g_return_val_if_fail(uri != NULL, NULL);
+
+ result = gnome_vfs_open_uri(&handle, uri, GNOME_VFS_OPEN_READ | GNOME_VFS_OPEN_RANDOM);
+ if (result == GNOME_VFS_OK)
+ {
+ GMimeStream *stream;
+ char *text_uri;
+
+ text_uri = gnome_vfs_uri_to_string(uri, GNOME_VFS_URI_HIDE_NONE);
+ stream = mn_gmime_stream_vfs_new(handle, text_uri);
+ g_free(text_uri);
+
+ message = mn_message_new_from_mime_stream(mailbox_uri, stream);
+ g_object_unref(stream);
+
+ gnome_vfs_close(handle);
+ }
+ else
+ message = mn_message_new_from_error(mailbox_uri, gnome_vfs_result_to_string(result));
+
+ return message;
+}
+
+MNMessage *
+mn_message_new_from_buffer (MNURI *mailbox_uri,
+ const char *buffer,
+ unsigned int len)
+{
+ GMimeStream *stream;
+ MNMessage *message;
+
+ g_return_val_if_fail(MN_IS_URI(mailbox_uri), NULL);
+ g_return_val_if_fail(buffer != NULL, NULL);
+
+ stream = g_mime_stream_mem_new_with_buffer(buffer, len);
+ message = mn_message_new_from_mime_stream(mailbox_uri, stream);
+ g_object_unref(stream);
+
+ return message;
+}
diff --git a/src/mn-message-mime.h b/src/mn-message-mime.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_MESSAGE_MIME_H
+#define _MN_MESSAGE_MIME_H
+
+#include <gmime/gmime.h>
+#include "mn-message.h"
+
+MNMessage *mn_message_new_from_mime_message (MNURI *mailbox_uri,
+ GMimeMessage *mime_message);
+MNMessage *mn_message_new_from_mime_stream (MNURI *mailbox_uri,
+ GMimeStream *mime_stream);
+MNMessage *mn_message_new_from_uri (MNURI *mailbox_uri,
+ GnomeVFSURI *uri);
+MNMessage *mn_message_new_from_buffer (MNURI *mailbox_uri,
+ const char *buffer,
+ unsigned int len);
+
+#endif /* _MN_MESSAGE_MIME_H */
diff --git a/src/mn-message-private.h b/src/mn-message-private.h
@@ -0,0 +1,17 @@
+/* Generated by GOB (v2.0.10) (do not edit directly) */
+
+#ifndef __MN_MESSAGE_PRIVATE_H__
+#define __MN_MESSAGE_PRIVATE_H__
+
+#include "mn-message.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-message.c b/src/mn-message.c
@@ -0,0 +1,511 @@
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
+ (do not edit directly) */
+
+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
+
+#define GOB_VERSION_MAJOR 2
+#define GOB_VERSION_MINOR 0
+#define GOB_VERSION_PATCHLEVEL 10
+
+#define selfp (self->_priv)
+
+#include <string.h> /* memset() */
+
+#include "mn-message.h"
+
+#include "mn-message-private.h"
+
+#ifdef G_LIKELY
+#define ___GOB_LIKELY(expr) G_LIKELY(expr)
+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr)
+#else /* ! G_LIKELY */
+#define ___GOB_LIKELY(expr) (expr)
+#define ___GOB_UNLIKELY(expr) (expr)
+#endif /* G_LIKELY */
+
+#line 26 "mn-message.gob"
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include "mn-util.h"
+
+#line 33 "mn-message.c"
+/* self casting macros */
+#define SELF(x) MN_MESSAGE(x)
+#define SELF_CONST(x) MN_MESSAGE_CONST(x)
+#define IS_SELF(x) MN_IS_MESSAGE(x)
+#define TYPE_SELF MN_TYPE_MESSAGE
+#define SELF_CLASS(x) MN_MESSAGE_CLASS(x)
+
+#define SELF_GET_CLASS(x) MN_MESSAGE_GET_CLASS(x)
+
+/* self typedefs */
+typedef MNMessage Self;
+typedef MNMessageClass SelfClass;
+
+/* here are local prototypes */
+static void ___object_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec);
+static void ___object_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec);
+static void mn_message_init (MNMessage * o) G_GNUC_UNUSED;
+static void mn_message_class_init (MNMessageClass * c) G_GNUC_UNUSED;
+static int mn_message_slist_find_by_id_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
+static int mn_message_slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b) G_GNUC_UNUSED;
+
+enum {
+ PROP_0,
+ PROP_MAILBOX_URI,
+ PROP_ERROR,
+ PROP_SENT_TIME,
+ PROP_ID,
+ PROP_FROM,
+ PROP_SUBJECT
+};
+
+/* pointer to the class of our parent */
+static GObjectClass *parent_class = NULL;
+
+/* Short form macros */
+#define self_new mn_message_new
+#define self_new_from_error mn_message_new_from_error
+#define self_slist_find_by_id mn_message_slist_find_by_id
+#define self_slist_find_by_id_compare_func mn_message_slist_find_by_id_compare_func
+#define self_slist_sort_by_sent_time mn_message_slist_sort_by_sent_time
+#define self_slist_sort_by_sent_time_compare_func mn_message_slist_sort_by_sent_time_compare_func
+GType
+mn_message_get_type (void)
+{
+ static GType type = 0;
+
+ if ___GOB_UNLIKELY(type == 0) {
+ static const GTypeInfo info = {
+ sizeof (MNMessageClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) mn_message_class_init,
+ (GClassFinalizeFunc) NULL,
+ NULL /* class_data */,
+ sizeof (MNMessage),
+ 0 /* n_preallocs */,
+ (GInstanceInitFunc) mn_message_init,
+ NULL
+ };
+
+ type = g_type_register_static (G_TYPE_OBJECT, "MNMessage", &info, (GTypeFlags)0);
+ }
+
+ return type;
+}
+
+/* a macro for creating a new object of our type */
+#define GET_NEW ((MNMessage *)g_object_new(mn_message_get_type(), NULL))
+
+/* a function for creating a new object of our type */
+#include <stdarg.h>
+static MNMessage * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED;
+static MNMessage *
+GET_NEW_VARG (const char *first, ...)
+{
+ MNMessage *ret;
+ va_list ap;
+ va_start (ap, first);
+ ret = (MNMessage *)g_object_new_valist (mn_message_get_type (), first, ap);
+ va_end (ap);
+ return ret;
+}
+
+
+static void
+___dispose (GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message::dispose"
+ MNMessage *self G_GNUC_UNUSED = MN_MESSAGE (obj_self);
+ if (G_OBJECT_CLASS (parent_class)->dispose) \
+ (* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
+#line 35 "mn-message.gob"
+ if(self->mailbox_uri) { g_object_unref ((gpointer) self->mailbox_uri); self->mailbox_uri = NULL; }
+#line 127 "mn-message.c"
+}
+#undef __GOB_FUNCTION__
+
+
+static void
+___finalize(GObject *obj_self)
+{
+#define __GOB_FUNCTION__ "MN:Message::finalize"
+ MNMessage *self G_GNUC_UNUSED = MN_MESSAGE (obj_self);
+ if(G_OBJECT_CLASS(parent_class)->finalize) \
+ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
+#line 41 "mn-message.gob"
+ if(self->error) { g_free ((gpointer) self->error); self->error = NULL; }
+#line 141 "mn-message.c"
+#line 49 "mn-message.gob"
+ if(self->id) { g_free ((gpointer) self->id); self->id = NULL; }
+#line 144 "mn-message.c"
+#line 75 "mn-message.gob"
+ if(self->from) { g_free ((gpointer) self->from); self->from = NULL; }
+#line 147 "mn-message.c"
+#line 90 "mn-message.gob"
+ if(self->subject) { g_free ((gpointer) self->subject); self->subject = NULL; }
+#line 150 "mn-message.c"
+}
+#undef __GOB_FUNCTION__
+
+static void
+mn_message_init (MNMessage * o G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message::init"
+}
+#undef __GOB_FUNCTION__
+static void
+mn_message_class_init (MNMessageClass * c G_GNUC_UNUSED)
+{
+#define __GOB_FUNCTION__ "MN:Message::class_init"
+ GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+
+ parent_class = g_type_class_ref (G_TYPE_OBJECT);
+
+ g_object_class->dispose = ___dispose;
+ g_object_class->finalize = ___finalize;
+ g_object_class->get_property = ___object_get_property;
+ g_object_class->set_property = ___object_set_property;
+ {
+ GParamSpec *param_spec;
+
+ param_spec = g_param_spec_object
+ ("mailbox_uri" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ MN_TYPE_URI /* object_type */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_MAILBOX_URI,
+ param_spec);
+ param_spec = g_param_spec_string
+ ("error" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ NULL /* default_value */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_ERROR,
+ param_spec);
+ param_spec = g_param_spec_ulong
+ ("sent_time" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ 0 /* minimum */,
+ G_MAXULONG /* maximum */,
+ 0 /* default_value */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_SENT_TIME,
+ param_spec);
+ param_spec = g_param_spec_string
+ ("id" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ NULL /* default_value */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_ID,
+ param_spec);
+ param_spec = g_param_spec_string
+ ("from" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ NULL /* default_value */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_FROM,
+ param_spec);
+ param_spec = g_param_spec_string
+ ("subject" /* name */,
+ NULL /* nick */,
+ NULL /* blurb */,
+ NULL /* default_value */,
+ (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+ g_object_class_install_property (g_object_class,
+ PROP_SUBJECT,
+ param_spec);
+ }
+}
+#undef __GOB_FUNCTION__
+
+static void
+___object_set_property (GObject *object,
+ guint property_id,
+ const GValue *VAL G_GNUC_UNUSED,
+ GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Message::set_property"
+{
+ MNMessage *self G_GNUC_UNUSED;
+
+ self = MN_MESSAGE (object);
+
+ switch (property_id) {
+ case PROP_MAILBOX_URI:
+ {
+#line 36 "mn-message.gob"
+{ GObject *___old = (GObject *)self->mailbox_uri; self->mailbox_uri = (MNURI *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
+#line 251 "mn-message.c"
+ }
+ break;
+ case PROP_ERROR:
+ {
+#line 42 "mn-message.gob"
+{ char *old = self->error; self->error = g_value_dup_string (VAL); g_free (old); }
+#line 258 "mn-message.c"
+ }
+ break;
+ case PROP_SENT_TIME:
+ {
+#line 46 "mn-message.gob"
+self->sent_time = g_value_get_ulong (VAL);
+#line 265 "mn-message.c"
+ }
+ break;
+ case PROP_ID:
+ {
+#line 52 "mn-message.gob"
+
+ const char *id = g_value_get_string(VAL);
+
+ g_return_if_fail(self->id == NULL);
+ if (id)
+ self->id = g_strdup(id);
+ else
+ {
+ static int unique = 0;
+
+ /*
+ * Generate an unique identifier (we don't need it do be a
+ * compliant Message-Id).
+ */
+ self->id = g_strdup_printf("%i", g_atomic_int_exchange_and_add(&unique, 1));
+ }
+
+#line 288 "mn-message.c"
+ }
+ break;
+ case PROP_FROM:
+ {
+#line 78 "mn-message.gob"
+
+ const char *from = g_value_get_string(VAL);
+
+ g_return_if_fail(self->from == NULL);
+ self->from = g_strdup(from ? from : _("Unknown"));
+
+#line 300 "mn-message.c"
+ }
+ break;
+ case PROP_SUBJECT:
+ {
+#line 93 "mn-message.gob"
+
+ const char *subject = g_value_get_string(VAL);
+
+ g_return_if_fail(self->subject == NULL);
+ self->subject = g_strdup(subject ? subject : "");
+
+#line 312 "mn-message.c"
+ }
+ break;
+ default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+# undef G_STRLOC
+# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+#undef __GOB_FUNCTION__
+
+static void
+___object_get_property (GObject *object,
+ guint property_id,
+ GValue *VAL G_GNUC_UNUSED,
+ GParamSpec *pspec G_GNUC_UNUSED)
+#define __GOB_FUNCTION__ "MN:Message::get_property"
+{
+ MNMessage *self G_GNUC_UNUSED;
+
+ self = MN_MESSAGE (object);
+
+ switch (property_id) {
+ case PROP_MAILBOX_URI:
+ {
+#line 36 "mn-message.gob"
+g_value_set_object (VAL, (gpointer)self->mailbox_uri);
+#line 343 "mn-message.c"
+ }
+ break;
+ case PROP_ERROR:
+ {
+#line 42 "mn-message.gob"
+g_value_set_string (VAL, self->error);
+#line 350 "mn-message.c"
+ }
+ break;
+ case PROP_SENT_TIME:
+ {
+#line 46 "mn-message.gob"
+g_value_set_ulong (VAL, self->sent_time);
+#line 357 "mn-message.c"
+ }
+ break;
+ case PROP_ID:
+ {
+#line 70 "mn-message.gob"
+
+ g_value_set_string(VAL, self->id);
+
+#line 366 "mn-message.c"
+ }
+ break;
+ case PROP_FROM:
+ {
+#line 85 "mn-message.gob"
+
+ g_value_set_string(VAL, self->from);
+
+#line 375 "mn-message.c"
+ }
+ break;
+ case PROP_SUBJECT:
+ {
+#line 100 "mn-message.gob"
+
+ g_value_set_string(VAL, self->subject);
+
+#line 384 "mn-message.c"
+ }
+ break;
+ default:
+/* Apparently in g++ this is needed, glib is b0rk */
+#ifndef __PRETTY_FUNCTION__
+# undef G_STRLOC
+# define G_STRLOC __FILE__ ":" G_STRINGIFY (__LINE__)
+#endif
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+ break;
+ }
+}
+#undef __GOB_FUNCTION__
+
+
+
+#line 104 "mn-message.gob"
+MNMessage *
+mn_message_new (MNURI * mailbox_uri, const char * error, time_t sent_time, const char * id, const char * from, const char * subject)
+#line 404 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::new"
+#line 104 "mn-message.gob"
+ g_return_val_if_fail (mailbox_uri != NULL, (MNMessage * )0);
+#line 104 "mn-message.gob"
+ g_return_val_if_fail (MN_IS_URI (mailbox_uri), (MNMessage * )0);
+#line 411 "mn-message.c"
+{
+#line 111 "mn-message.gob"
+
+ return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX_URI(G_OBJECT(mailbox_uri)),
+ MN_MESSAGE_PROP_ERROR((char *) error),
+ MN_MESSAGE_PROP_SENT_TIME(sent_time),
+ MN_MESSAGE_PROP_ID((char *) id),
+ MN_MESSAGE_PROP_FROM((char *) from),
+ MN_MESSAGE_PROP_SUBJECT((char *) subject),
+ NULL);
+ }}
+#line 423 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 121 "mn-message.gob"
+MNMessage *
+mn_message_new_from_error (MNURI * mailbox_uri, const char * error)
+#line 429 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::new_from_error"
+#line 121 "mn-message.gob"
+ g_return_val_if_fail (mailbox_uri != NULL, (MNMessage * )0);
+#line 121 "mn-message.gob"
+ g_return_val_if_fail (MN_IS_URI (mailbox_uri), (MNMessage * )0);
+#line 121 "mn-message.gob"
+ g_return_val_if_fail (error != NULL, (MNMessage * )0);
+#line 438 "mn-message.c"
+{
+#line 124 "mn-message.gob"
+
+ return self_new(mailbox_uri, error, 0, NULL, NULL, NULL);
+ }}
+#line 444 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 128 "mn-message.gob"
+GSList *
+mn_message_slist_find_by_id (GSList * list, MNMessage * self)
+#line 450 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_find_by_id"
+#line 128 "mn-message.gob"
+ g_return_val_if_fail (self != NULL, (GSList * )0);
+#line 128 "mn-message.gob"
+ g_return_val_if_fail (MN_IS_MESSAGE (self), (GSList * )0);
+#line 457 "mn-message.c"
+{
+#line 130 "mn-message.gob"
+
+ return g_slist_find_custom(list, self, self_slist_find_by_id_compare_func);
+ }}
+#line 463 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 134 "mn-message.gob"
+static int
+mn_message_slist_find_by_id_compare_func (gconstpointer a, gconstpointer b)
+#line 469 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_find_by_id_compare_func"
+{
+#line 136 "mn-message.gob"
+
+ Self *message_a = (Self *) a;
+ Self *message_b = (Self *) b;
+
+ return strcmp(message_a->id, message_b->id);
+ }}
+#line 480 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 143 "mn-message.gob"
+GSList *
+mn_message_slist_sort_by_sent_time (GSList * list)
+#line 486 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_sort_by_sent_time"
+{
+#line 145 "mn-message.gob"
+
+ return g_slist_sort(list, self_slist_sort_by_sent_time_compare_func);
+ }}
+#line 494 "mn-message.c"
+#undef __GOB_FUNCTION__
+
+#line 149 "mn-message.gob"
+static int
+mn_message_slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b)
+#line 500 "mn-message.c"
+{
+#define __GOB_FUNCTION__ "MN:Message::slist_sort_by_sent_time_compare_func"
+{
+#line 151 "mn-message.gob"
+
+ Self *message_a = (Self *) a;
+ Self *message_b = (Self *) b;
+
+ return message_a->sent_time - message_b->sent_time;
+ }}
+#line 511 "mn-message.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-message.gob b/src/mn-message.gob
@@ -0,0 +1,157 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+requires 2.0.10
+
+%headertop{
+#include <time.h>
+#include "mn-uri.h"
+%}
+
+%{
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include "mn-util.h"
+%}
+
+class MN:Message from G:Object
+{
+ /* always set */
+ public MNURI *mailbox_uri unrefwith g_object_unref;
+ property OBJECT mailbox_uri (flags = CONSTRUCT_ONLY,
+ object_type = MN:URI,
+ link);
+
+ /* may be NULL */
+ public char *error destroywith g_free;
+ property STRING error (flags = CONSTRUCT_ONLY, link);
+
+ /* sent time, may be 0 */
+ public time_t sent_time;
+ property ULONG sent_time (flags = CONSTRUCT_ONLY, link);
+
+ /* always set */
+ public char *id destroywith g_free;
+ property STRING id (flags = CONSTRUCT_ONLY)
+ set
+ {
+ const char *id = g_value_get_string(VAL);
+
+ g_return_if_fail(self->id == NULL);
+ if (id)
+ self->id = g_strdup(id);
+ else
+ {
+ static int unique = 0;
+
+ /*
+ * Generate an unique identifier (we don't need it do be a
+ * compliant Message-Id).
+ */
+ self->id = g_strdup_printf("%i", g_atomic_int_exchange_and_add(&unique, 1));
+ }
+ }
+ get
+ {
+ g_value_set_string(VAL, self->id);
+ };
+
+ /* always set */
+ public char *from destroywith g_free;
+ property STRING from (flags = CONSTRUCT_ONLY)
+ set
+ {
+ const char *from = g_value_get_string(VAL);
+
+ g_return_if_fail(self->from == NULL);
+ self->from = g_strdup(from ? from : _("Unknown"));
+ }
+ get
+ {
+ g_value_set_string(VAL, self->from);
+ };
+
+ /* always set */
+ public char *subject destroywith g_free;
+ property STRING subject (flags = CONSTRUCT_ONLY)
+ set
+ {
+ const char *subject = g_value_get_string(VAL);
+
+ g_return_if_fail(self->subject == NULL);
+ self->subject = g_strdup(subject ? subject : "");
+ }
+ get
+ {
+ g_value_set_string(VAL, self->subject);
+ };
+
+ public MNMessage *
+ new (MN:URI *mailbox_uri (check null type),
+ const char *error,
+ time_t sent_time,
+ const char *id,
+ const char *from,
+ const char *subject)
+ {
+ return GET_NEW_VARG(MN_MESSAGE_PROP_MAILBOX_URI(G_OBJECT(mailbox_uri)),
+ MN_MESSAGE_PROP_ERROR((char *) error),
+ MN_MESSAGE_PROP_SENT_TIME(sent_time),
+ MN_MESSAGE_PROP_ID((char *) id),
+ MN_MESSAGE_PROP_FROM((char *) from),
+ MN_MESSAGE_PROP_SUBJECT((char *) subject),
+ NULL);
+ }
+
+ public MNMessage *
+ new_from_error (MN:URI *mailbox_uri (check null type),
+ const char *error (check null))
+ {
+ return self_new(mailbox_uri, error, 0, NULL, NULL, NULL);
+ }
+
+ public GSList *
+ slist_find_by_id (GSList *list, MN:Message *self (check null type))
+ {
+ return g_slist_find_custom(list, self, self_slist_find_by_id_compare_func);
+ }
+
+ private int
+ slist_find_by_id_compare_func (gconstpointer a, gconstpointer b)
+ {
+ Self *message_a = (Self *) a;
+ Self *message_b = (Self *) b;
+
+ return strcmp(message_a->id, message_b->id);
+ }
+
+ public GSList *
+ slist_sort_by_sent_time (GSList *list)
+ {
+ return g_slist_sort(list, self_slist_sort_by_sent_time_compare_func);
+ }
+
+ private int
+ slist_sort_by_sent_time_compare_func (gconstpointer a, gconstpointer b)
+ {
+ Self *message_a = (Self *) a;
+ Self *message_b = (Self *) b;
+
+ return message_a->sent_time - message_b->sent_time;
+ }
+}
diff --git a/src/mn-message.h b/src/mn-message.h
@@ -0,0 +1,108 @@
+/* Generated by GOB (v2.0.10) (do not edit directly) */
+
+#include <glib.h>
+#include <glib-object.h>
+
+
+#include <time.h>
+#include "mn-uri.h"
+
+#ifndef __MN_MESSAGE_H__
+#define __MN_MESSAGE_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+/*
+ * Type checking and casting macros
+ */
+#define MN_TYPE_MESSAGE (mn_message_get_type())
+#define MN_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_get_type(), MNMessage)
+#define MN_MESSAGE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), mn_message_get_type(), MNMessage const)
+#define MN_MESSAGE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), mn_message_get_type(), MNMessageClass)
+#define MN_IS_MESSAGE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), mn_message_get_type ())
+
+#define MN_MESSAGE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), mn_message_get_type(), MNMessageClass)
+
+/*
+ * Main object structure
+ */
+#ifndef __TYPEDEF_MN_MESSAGE__
+#define __TYPEDEF_MN_MESSAGE__
+typedef struct _MNMessage MNMessage;
+#endif
+struct _MNMessage {
+ GObject __parent__;
+ /*< public >*/
+ MNURI * mailbox_uri;
+ char * error;
+ time_t sent_time;
+ char * id;
+ char * from;
+ char * subject;
+};
+
+/*
+ * Class definition
+ */
+typedef struct _MNMessageClass MNMessageClass;
+struct _MNMessageClass {
+ GObjectClass __parent__;
+};
+
+
+/*
+ * Public methods
+ */
+GType mn_message_get_type (void);
+MNMessage * mn_message_new (MNURI * mailbox_uri,
+ const char * error,
+ time_t sent_time,
+ const char * id,
+ const char * from,
+ const char * subject);
+MNMessage * mn_message_new_from_error (MNURI * mailbox_uri,
+ const char * error);
+GSList * mn_message_slist_find_by_id (GSList * list,
+ MNMessage * self);
+GSList * mn_message_slist_sort_by_sent_time (GSList * list);
+
+/*
+ * Argument wrapping macros
+ */
+#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
+#define MN_MESSAGE_PROP_MAILBOX_URI(arg) "mailbox_uri", __extension__ ({GObject *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_MAILBOX_URI(arg) "mailbox_uri", __extension__ ({GObject **z = (arg); z;})
+#define MN_MESSAGE_PROP_ERROR(arg) "error", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_ERROR(arg) "error", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_SENT_TIME(arg) "sent_time", __extension__ ({gulong z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_SENT_TIME(arg) "sent_time", __extension__ ({gulong *z = (arg); z;})
+#define MN_MESSAGE_PROP_ID(arg) "id", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_ID(arg) "id", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_FROM(arg) "from", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_FROM(arg) "from", __extension__ ({gchar **z = (arg); z;})
+#define MN_MESSAGE_PROP_SUBJECT(arg) "subject", __extension__ ({gchar *z = (arg); z;})
+#define MN_MESSAGE_GET_PROP_SUBJECT(arg) "subject", __extension__ ({gchar **z = (arg); z;})
+#else /* __GNUC__ && !__STRICT_ANSI__ */
+#define MN_MESSAGE_PROP_MAILBOX_URI(arg) "mailbox_uri",(GObject *)(arg)
+#define MN_MESSAGE_GET_PROP_MAILBOX_URI(arg) "mailbox_uri",(GObject **)(arg)
+#define MN_MESSAGE_PROP_ERROR(arg) "error",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_ERROR(arg) "error",(gchar **)(arg)
+#define MN_MESSAGE_PROP_SENT_TIME(arg) "sent_time",(gulong )(arg)
+#define MN_MESSAGE_GET_PROP_SENT_TIME(arg) "sent_time",(gulong *)(arg)
+#define MN_MESSAGE_PROP_ID(arg) "id",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_ID(arg) "id",(gchar **)(arg)
+#define MN_MESSAGE_PROP_FROM(arg) "from",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_FROM(arg) "from",(gchar **)(arg)
+#define MN_MESSAGE_PROP_SUBJECT(arg) "subject",(gchar *)(arg)
+#define MN_MESSAGE_GET_PROP_SUBJECT(arg) "subject",(gchar **)(arg)
+#endif /* __GNUC__ && !__STRICT_ANSI__ */
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif
diff --git a/src/mn-mh-mailbox-private.h b/src/mn-mh-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_MH_MAILBOX_PRIVATE_H__
#define __MN_MH_MAILBOX_PRIVATE_H__
diff --git a/src/mn-mh-mailbox.c b/src/mn-mh-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:00 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -21,7 +21,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-mh-mailbox.gob"
+#line 24 "mn-mh-mailbox.gob"
#include "config.h"
#include <stdio.h>
@@ -30,8 +30,12 @@
#include <gdk/gdk.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
+#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
-#line 35 "mn-mh-mailbox.c"
+#line 39 "mn-mh-mailbox.c"
/* self casting macros */
#define SELF(x) MN_MH_MAILBOX(x)
#define SELF_CONST(x) MN_MH_MAILBOX_CONST(x)
@@ -103,10 +107,10 @@ mn_mh_mailbox_init (MNMHMailbox * o G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:MH:Mailbox::init"
}
#undef __GOB_FUNCTION__
-#line 34 "mn-mh-mailbox.gob"
+#line 40 "mn-mh-mailbox.gob"
static void
mn_mh_mailbox_class_init (MNMHMailboxClass * class G_GNUC_UNUSED)
-#line 110 "mn-mh-mailbox.c"
+#line 114 "mn-mh-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:MH:Mailbox::class_init"
GObjectClass *g_object_class = (GObjectClass *)class;
@@ -114,29 +118,29 @@ mn_mh_mailbox_class_init (MNMHMailboxClass * class G_GNUC_UNUSED)
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 39 "mn-mh-mailbox.gob"
+#line 45 "mn-mh-mailbox.gob"
g_object_class->constructor = ___2_mn_mh_mailbox_constructor;
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
mn_mailbox_class->impl_is = ___3_mn_mh_mailbox_impl_is;
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
mn_mailbox_class->impl_threaded_check = ___4_mn_mh_mailbox_impl_threaded_check;
-#line 124 "mn-mh-mailbox.c"
+#line 128 "mn-mh-mailbox.c"
{
-#line 35 "mn-mh-mailbox.gob"
+#line 41 "mn-mh-mailbox.gob"
MN_MAILBOX_CLASS(class)->format = "MH";
-#line 130 "mn-mh-mailbox.c"
+#line 134 "mn-mh-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 39 "mn-mh-mailbox.gob"
+#line 45 "mn-mh-mailbox.gob"
static GObject *
___2_mn_mh_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 140 "mn-mh-mailbox.c"
+#line 144 "mn-mh-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -144,54 +148,64 @@ ___2_mn_mh_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_prop
{
#define __GOB_FUNCTION__ "MN:MH:Mailbox::constructor"
{
-#line 41 "mn-mh-mailbox.gob"
+#line 47 "mn-mh-mailbox.gob"
GObject *object;
MNMailbox *self;
- char *sequences_uri;
object = PARENT_HANDLER(type, n_construct_properties, construct_params);
self = MN_MAILBOX(object);
- sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
-
GDK_THREADS_ENTER();
+#ifdef WITH_MIME
mn_mailbox_monitor(self,
- sequences_uri,
- GNOME_VFS_MONITOR_FILE,
+ self->uri->text,
+ GNOME_VFS_MONITOR_DIRECTORY,
MN_MAILBOX_MONITOR_EVENT_CHANGED
| MN_MAILBOX_MONITOR_EVENT_DELETED
| MN_MAILBOX_MONITOR_EVENT_CREATED);
+#else /* WITH_MIME */
+ {
+ char *sequences_uri;
+
+ sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
+ mn_mailbox_monitor(self,
+ sequences_uri,
+ GNOME_VFS_MONITOR_FILE,
+ MN_MAILBOX_MONITOR_EVENT_CHANGED
+ | MN_MAILBOX_MONITOR_EVENT_DELETED
+ | MN_MAILBOX_MONITOR_EVENT_CREATED);
+ g_free(sequences_uri);
+ }
+#endif /* WITH_MIME */
gdk_flush();
GDK_THREADS_LEAVE();
- g_free(sequences_uri);
-
return object;
}}
-#line 175 "mn-mh-mailbox.c"
+#line 189 "mn-mh-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
static gboolean
___3_mn_mh_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 182 "mn-mh-mailbox.c"
+#line 196 "mn-mh-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:MH:Mailbox::impl_is"
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 68 "mn-mh-mailbox.gob"
+#line 84 "mn-mh-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 193 "mn-mh-mailbox.c"
+#line 207 "mn-mh-mailbox.c"
{
-#line 70 "mn-mh-mailbox.gob"
+#line 86 "mn-mh-mailbox.gob"
gboolean is = FALSE;
@@ -206,26 +220,26 @@ ___3_mn_mh_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
return is;
}}
-#line 210 "mn-mh-mailbox.c"
+#line 224 "mn-mh-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
static void
___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
-#line 217 "mn-mh-mailbox.c"
+#line 231 "mn-mh-mailbox.c"
#define PARENT_HANDLER(___self) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___self); }
{
#define __GOB_FUNCTION__ "MN:MH:Mailbox::impl_threaded_check"
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 85 "mn-mh-mailbox.gob"
+#line 101 "mn-mh-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 227 "mn-mh-mailbox.c"
+#line 241 "mn-mh-mailbox.c"
{
-#line 87 "mn-mh-mailbox.gob"
+#line 103 "mn-mh-mailbox.gob"
GnomeVFSURI *sequences_uri;
GnomeVFSResult result;
@@ -239,18 +253,57 @@ ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
{
MNVFSReadLineContext *context = NULL;
const char *line;
+#ifdef WITH_MIME
+ GSList *messages = NULL;
+#else
gboolean has_new = FALSE;
-
+#endif
+
while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK)
- if (! strncmp(line, "unseen", 6))
+ if (! strncmp(line, "unseen: ", 8))
{
int first;
+#ifdef WITH_MIME
+ char **elements;
+ int i;
+ elements = g_strsplit(line + 8, " ", 0);
+ for (i = 0; elements[i]; i++)
+ {
+ int last;
+ int n;
+
+ n = sscanf(elements[i], "%d-%d", &first, &last);
+ if (n >= 1)
+ {
+ int j;
+
+ if (n == 1)
+ last = first;
+
+ for (j = first; j <= last; j++)
+ {
+ char *filename;
+ GnomeVFSURI *message_uri;
+
+ filename = g_strdup_printf("%i", j);
+ message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, filename);
+ g_free(filename);
+
+ messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+ gnome_vfs_uri_unref(message_uri);
+ }
+ }
+ }
+ g_strfreev(elements);
+
+#else /* WITH_MIME */
if (sscanf(line, "unseen: %d", &first) == 1)
{
has_new = TRUE;
break;
}
+#endif /* WITH_MIME */
}
mn_vfs_read_line_context_free(context);
@@ -259,12 +312,23 @@ ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
GDK_THREADS_ENTER();
if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
- mn_mailbox_set_has_new(self, has_new);
+ {
+#ifdef WITH_MIME
+ mn_mailbox_set_has_new(self, messages != NULL);
+ mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+ mn_mailbox_set_has_new(self, has_new);
+#endif
+ }
else
mn_mailbox_set_error(self, _("error while reading .mh_sequences: %s"), gnome_vfs_result_to_string(result));
gdk_flush();
GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+ mn_g_object_slist_free(messages);
+#endif
}
else
{
@@ -279,6 +343,6 @@ ___4_mn_mh_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
}}
-#line 283 "mn-mh-mailbox.c"
+#line 347 "mn-mh-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
diff --git a/src/mn-mh-mailbox.gob b/src/mn-mh-mailbox.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -27,6 +29,10 @@
#include <gdk/gdk.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
+#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
%}
class MN:MH:Mailbox from MN:Mailbox
@@ -41,27 +47,37 @@ class MN:MH:Mailbox from MN:Mailbox
{
GObject *object;
MNMailbox *self;
- char *sequences_uri;
object = PARENT_HANDLER(type, n_construct_properties, construct_params);
self = MN_MAILBOX(object);
- sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
-
GDK_THREADS_ENTER();
+#ifdef WITH_MIME
mn_mailbox_monitor(self,
- sequences_uri,
- GNOME_VFS_MONITOR_FILE,
+ self->uri->text,
+ GNOME_VFS_MONITOR_DIRECTORY,
MN_MAILBOX_MONITOR_EVENT_CHANGED
| MN_MAILBOX_MONITOR_EVENT_DELETED
| MN_MAILBOX_MONITOR_EVENT_CREATED);
+#else /* WITH_MIME */
+ {
+ char *sequences_uri;
+
+ sequences_uri = g_build_path("/", self->uri->text, ".mh_sequences", NULL);
+ mn_mailbox_monitor(self,
+ sequences_uri,
+ GNOME_VFS_MONITOR_FILE,
+ MN_MAILBOX_MONITOR_EVENT_CHANGED
+ | MN_MAILBOX_MONITOR_EVENT_DELETED
+ | MN_MAILBOX_MONITOR_EVENT_CREATED);
+ g_free(sequences_uri);
+ }
+#endif /* WITH_MIME */
gdk_flush();
GDK_THREADS_LEAVE();
- g_free(sequences_uri);
-
return object;
}
@@ -97,18 +113,57 @@ class MN:MH:Mailbox from MN:Mailbox
{
MNVFSReadLineContext *context = NULL;
const char *line;
+#ifdef WITH_MIME
+ GSList *messages = NULL;
+#else
gboolean has_new = FALSE;
-
+#endif
+
while ((result = mn_vfs_read_line(&context, handle, &line)) == GNOME_VFS_OK)
- if (! strncmp(line, "unseen", 6))
+ if (! strncmp(line, "unseen: ", 8))
{
int first;
+#ifdef WITH_MIME
+ char **elements;
+ int i;
+ elements = g_strsplit(line + 8, " ", 0);
+ for (i = 0; elements[i]; i++)
+ {
+ int last;
+ int n;
+
+ n = sscanf(elements[i], "%d-%d", &first, &last);
+ if (n >= 1)
+ {
+ int j;
+
+ if (n == 1)
+ last = first;
+
+ for (j = first; j <= last; j++)
+ {
+ char *filename;
+ GnomeVFSURI *message_uri;
+
+ filename = g_strdup_printf("%i", j);
+ message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, filename);
+ g_free(filename);
+
+ messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+ gnome_vfs_uri_unref(message_uri);
+ }
+ }
+ }
+ g_strfreev(elements);
+
+#else /* WITH_MIME */
if (sscanf(line, "unseen: %d", &first) == 1)
{
has_new = TRUE;
break;
}
+#endif /* WITH_MIME */
}
mn_vfs_read_line_context_free(context);
@@ -117,12 +172,23 @@ class MN:MH:Mailbox from MN:Mailbox
GDK_THREADS_ENTER();
if (result == GNOME_VFS_OK || result == GNOME_VFS_ERROR_EOF)
- mn_mailbox_set_has_new(self, has_new);
+ {
+#ifdef WITH_MIME
+ mn_mailbox_set_has_new(self, messages != NULL);
+ mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+ mn_mailbox_set_has_new(self, has_new);
+#endif
+ }
else
mn_mailbox_set_error(self, _("error while reading .mh_sequences: %s"), gnome_vfs_result_to_string(result));
gdk_flush();
GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+ mn_g_object_slist_free(messages);
+#endif
}
else
{
diff --git a/src/mn-mh-mailbox.h b/src/mn-mh-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-pending-mailbox-private.h b/src/mn-pending-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_PENDING_MAILBOX_PRIVATE_H__
#define __MN_PENDING_MAILBOX_PRIVATE_H__
diff --git a/src/mn-pending-mailbox.c b/src/mn-pending-mailbox.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:53 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-pending-mailbox.h"
#include "mn-pending-mailbox-private.h"
@@ -21,13 +23,13 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-pending-mailbox.gob"
+#line 24 "mn-pending-mailbox.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
-#line 31 "mn-pending-mailbox.c"
+#line 33 "mn-pending-mailbox.c"
/* self casting macros */
#define SELF(x) MN_PENDING_MAILBOX(x)
#define SELF_CONST(x) MN_PENDING_MAILBOX_CONST(x)
@@ -98,43 +100,43 @@ mn_pending_mailbox_init (MNPendingMailbox * o G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:Pending:Mailbox::init"
}
#undef __GOB_FUNCTION__
-#line 30 "mn-pending-mailbox.gob"
+#line 32 "mn-pending-mailbox.gob"
static void
mn_pending_mailbox_class_init (MNPendingMailboxClass * class G_GNUC_UNUSED)
-#line 105 "mn-pending-mailbox.c"
+#line 107 "mn-pending-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Pending:Mailbox::class_init"
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
{
-#line 31 "mn-pending-mailbox.gob"
+#line 33 "mn-pending-mailbox.gob"
MN_MAILBOX_CLASS(class)->stock_id = GTK_STOCK_EXECUTE;
MN_MAILBOX_CLASS(class)->format = _("detecting");
-#line 117 "mn-pending-mailbox.c"
+#line 119 "mn-pending-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 36 "mn-pending-mailbox.gob"
+#line 38 "mn-pending-mailbox.gob"
MNMailbox *
mn_pending_mailbox_new (MNURI * uri)
-#line 127 "mn-pending-mailbox.c"
+#line 129 "mn-pending-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Pending:Mailbox::new"
-#line 36 "mn-pending-mailbox.gob"
+#line 38 "mn-pending-mailbox.gob"
g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 36 "mn-pending-mailbox.gob"
+#line 38 "mn-pending-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (MNMailbox * )0);
-#line 134 "mn-pending-mailbox.c"
+#line 136 "mn-pending-mailbox.c"
{
-#line 38 "mn-pending-mailbox.gob"
+#line 40 "mn-pending-mailbox.gob"
- return g_object_new(TYPE_SELF, MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL);
+ return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL));
}}
-#line 140 "mn-pending-mailbox.c"
+#line 142 "mn-pending-mailbox.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-pending-mailbox.gob b/src/mn-pending-mailbox.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -36,6 +38,6 @@ class MN:Pending:Mailbox from MN:Mailbox
public MNMailbox *
new (MN:URI *uri (check null type))
{
- return g_object_new(TYPE_SELF, MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL);
+ return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)), NULL));
}
}
diff --git a/src/mn-pending-mailbox.h b/src/mn-pending-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-pi-mailbox-properties-private.h b/src/mn-pi-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
#define __MN_PI_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-pi-mailbox-properties.c b/src/mn-pi-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-pi-mailbox-properties.h"
#include "mn-pi-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-pi-mailbox-properties.gob"
+#line 24 "mn-pi-mailbox-properties.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -30,7 +32,7 @@
#include "mn-auth-combo-box.h"
#include "mn-util.h"
-#line 34 "mn-pi-mailbox-properties.c"
+#line 36 "mn-pi-mailbox-properties.c"
/* self casting macros */
#define SELF(x) MN_PI_MAILBOX_PROPERTIES(x)
#define SELF_CONST(x) MN_PI_MAILBOX_PROPERTIES_CONST(x)
@@ -135,12 +137,12 @@ ___dispose (GObject *obj_self)
MNPIMailboxProperties *self G_GNUC_UNUSED = MN_PI_MAILBOX_PROPERTIES (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 42 "mn-pi-mailbox-properties.gob"
- if(self->size_group) { ((*(void (*)(void *))g_object_unref)) (self->size_group); self->size_group = NULL; }
-#line 141 "mn-pi-mailbox-properties.c"
-#line 48 "mn-pi-mailbox-properties.gob"
- if(self->tooltips) { ((*(void (*)(void *))g_object_unref)) (self->tooltips); self->tooltips = NULL; }
-#line 144 "mn-pi-mailbox-properties.c"
+#line 44 "mn-pi-mailbox-properties.gob"
+ if(self->size_group) { g_object_unref ((gpointer) self->size_group); self->size_group = NULL; }
+#line 143 "mn-pi-mailbox-properties.c"
+#line 50 "mn-pi-mailbox-properties.gob"
+ if(self->tooltips) { g_object_unref ((gpointer) self->tooltips); self->tooltips = NULL; }
+#line 146 "mn-pi-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
@@ -148,9 +150,9 @@ static void
mn_pi_mailbox_properties_init (MNPIMailboxProperties * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::init"
-#line 48 "mn-pi-mailbox-properties.gob"
+#line 50 "mn-pi-mailbox-properties.gob"
o->tooltips = mn_tooltips_new();
-#line 154 "mn-pi-mailbox-properties.c"
+#line 156 "mn-pi-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
static void
@@ -161,9 +163,9 @@ mn_pi_mailbox_properties_class_init (MNPIMailboxPropertiesClass * c G_GNUC_UNUSE
parent_class = g_type_class_ref (GTK_TYPE_VBOX);
-#line 55 "mn-pi-mailbox-properties.gob"
+#line 57 "mn-pi-mailbox-properties.gob"
g_object_class->constructor = ___1_mn_pi_mailbox_properties_constructor;
-#line 167 "mn-pi-mailbox-properties.c"
+#line 169 "mn-pi-mailbox-properties.c"
g_object_class->dispose = ___dispose;
g_object_class->get_property = ___object_get_property;
g_object_class->set_property = ___object_set_property;
@@ -195,9 +197,9 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_SIZE_GROUP:
{
-#line 43 "mn-pi-mailbox-properties.gob"
+#line 45 "mn-pi-mailbox-properties.gob"
{ GObject *___old = (GObject *)self->size_group; self->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 201 "mn-pi-mailbox-properties.c"
+#line 203 "mn-pi-mailbox-properties.c"
}
break;
default:
@@ -226,23 +228,23 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_COMPLETE:
{
-#line 37 "mn-pi-mailbox-properties.gob"
+#line 39 "mn-pi-mailbox-properties.gob"
-#line 232 "mn-pi-mailbox-properties.c"
+#line 234 "mn-pi-mailbox-properties.c"
}
break;
case PROP_LABEL:
{
-#line 40 "mn-pi-mailbox-properties.gob"
+#line 42 "mn-pi-mailbox-properties.gob"
g_value_set_string(VAL, SELF_GET_CLASS(self)->label);
-#line 239 "mn-pi-mailbox-properties.c"
+#line 241 "mn-pi-mailbox-properties.c"
}
break;
case PROP_SIZE_GROUP:
{
-#line 43 "mn-pi-mailbox-properties.gob"
+#line 45 "mn-pi-mailbox-properties.gob"
g_value_set_object (VAL, (gpointer)self->size_group);
-#line 246 "mn-pi-mailbox-properties.c"
+#line 248 "mn-pi-mailbox-properties.c"
}
break;
default:
@@ -259,10 +261,10 @@ g_value_set_object (VAL, (gpointer)self->size_group);
-#line 55 "mn-pi-mailbox-properties.gob"
+#line 57 "mn-pi-mailbox-properties.gob"
static GObject *
___1_mn_pi_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 266 "mn-pi-mailbox-properties.c"
+#line 268 "mn-pi-mailbox-properties.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -270,7 +272,7 @@ ___1_mn_pi_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_con
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::constructor"
{
-#line 57 "mn-pi-mailbox-properties.gob"
+#line 59 "mn-pi-mailbox-properties.gob"
GObject *object;
Self *self;
@@ -368,38 +370,38 @@ ___1_mn_pi_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_con
GTK_ENTRY(self->password_entry),
NULL);
- g_signal_connect(G_OBJECT(expander), "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
+ g_signal_connect(expander, "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
for (i = 0; i < 3; i++)
- g_signal_connect(G_OBJECT(self->conn_radio[i]), "toggled", G_CALLBACK(self_radio_toggled_h), self);
+ g_signal_connect(self->conn_radio[i], "toggled", G_CALLBACK(self_radio_toggled_h), self);
- g_signal_connect(G_OBJECT(self->hostname_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(self->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(self->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(self->hostname_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(self->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(self->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
return object;
}}
-#line 383 "mn-pi-mailbox-properties.c"
+#line 385 "mn-pi-mailbox-properties.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
static void
mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec, gpointer user_data)
-#line 390 "mn-pi-mailbox-properties.c"
+#line 392 "mn-pi-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::notify_expanded_h"
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
g_return_if_fail (object != NULL);
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
g_return_if_fail (G_IS_OBJECT (object));
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
g_return_if_fail (pspec != NULL);
-#line 166 "mn-pi-mailbox-properties.gob"
+#line 168 "mn-pi-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 401 "mn-pi-mailbox-properties.c"
+#line 403 "mn-pi-mailbox-properties.c"
{
-#line 170 "mn-pi-mailbox-properties.gob"
+#line 172 "mn-pi-mailbox-properties.gob"
Self *self = user_data;
@@ -408,46 +410,46 @@ mn_pi_mailbox_properties_notify_expanded_h (GObject * object, GParamSpec * pspec
? GTK_SIZE_GROUP_HORIZONTAL
: GTK_SIZE_GROUP_NONE);
}}
-#line 412 "mn-pi-mailbox-properties.c"
+#line 414 "mn-pi-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
void
mn_pi_mailbox_properties_entry_changed_h (GtkEditable * editable, gpointer user_data)
-#line 418 "mn-pi-mailbox-properties.c"
+#line 420 "mn-pi-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::entry_changed_h"
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
g_return_if_fail (editable != NULL);
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
g_return_if_fail (GTK_IS_EDITABLE (editable));
-#line 179 "mn-pi-mailbox-properties.gob"
+#line 181 "mn-pi-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 427 "mn-pi-mailbox-properties.c"
+#line 429 "mn-pi-mailbox-properties.c"
{
-#line 182 "mn-pi-mailbox-properties.gob"
+#line 184 "mn-pi-mailbox-properties.gob"
Self *self = user_data;
g_object_notify(G_OBJECT(self), "complete");
}}
-#line 434 "mn-pi-mailbox-properties.c"
+#line 436 "mn-pi-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
static void
mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpointer user_data)
-#line 440 "mn-pi-mailbox-properties.c"
+#line 442 "mn-pi-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::radio_toggled_h"
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
g_return_if_fail (togglebutton != NULL);
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
g_return_if_fail (GTK_IS_TOGGLE_BUTTON (togglebutton));
-#line 187 "mn-pi-mailbox-properties.gob"
+#line 189 "mn-pi-mailbox-properties.gob"
g_return_if_fail (user_data != NULL);
-#line 449 "mn-pi-mailbox-properties.c"
+#line 451 "mn-pi-mailbox-properties.c"
{
-#line 190 "mn-pi-mailbox-properties.gob"
+#line 192 "mn-pi-mailbox-properties.gob"
Self *self = user_data;
int i;
@@ -457,32 +459,32 @@ mn_pi_mailbox_properties_radio_toggled_h (GtkToggleButton * togglebutton, gpoint
g_object_notify(G_OBJECT(self), "complete");
}}
-#line 461 "mn-pi-mailbox-properties.c"
+#line 463 "mn-pi-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
void
mn_pi_mailbox_properties_set_contents (MNPIMailboxProperties * self, gboolean ssl, gboolean inband_ssl, const char * username, const char * password, const char * authmech, const char * hostname, int port)
-#line 467 "mn-pi-mailbox-properties.c"
+#line 469 "mn-pi-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::set_contents"
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (self != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (username != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (password != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (hostname != NULL);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (port >= 0);
-#line 200 "mn-pi-mailbox-properties.gob"
+#line 202 "mn-pi-mailbox-properties.gob"
g_return_if_fail (port <= 0xFFFF);
-#line 484 "mn-pi-mailbox-properties.c"
+#line 486 "mn-pi-mailbox-properties.c"
{
-#line 209 "mn-pi-mailbox-properties.gob"
+#line 211 "mn-pi-mailbox-properties.gob"
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(self->conn_radio[ssl ? 2 : (inband_ssl ? 1 : 0)]), TRUE);
gtk_entry_set_text(GTK_ENTRY(self->username_entry), username);
@@ -491,22 +493,22 @@ mn_pi_mailbox_properties_set_contents (MNPIMailboxProperties * self, gboolean ss
gtk_entry_set_text(GTK_ENTRY(self->hostname_entry), hostname);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(self->port_spin[ssl ? 2 : (inband_ssl ? 1 : 0)]), port);
}}
-#line 495 "mn-pi-mailbox-properties.c"
+#line 497 "mn-pi-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 218 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
void
mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, gboolean * ssl, gboolean * inband_ssl, const char ** username, const char ** password, char ** authmech, const char ** hostname, int * port)
-#line 501 "mn-pi-mailbox-properties.c"
+#line 503 "mn-pi-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:PI:Mailbox:Properties::get_contents"
-#line 218 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
g_return_if_fail (self != NULL);
-#line 218 "mn-pi-mailbox-properties.gob"
+#line 220 "mn-pi-mailbox-properties.gob"
g_return_if_fail (MN_IS_PI_MAILBOX_PROPERTIES (self));
-#line 508 "mn-pi-mailbox-properties.c"
+#line 510 "mn-pi-mailbox-properties.c"
{
-#line 227 "mn-pi-mailbox-properties.gob"
+#line 229 "mn-pi-mailbox-properties.gob"
gboolean _ssl;
gboolean _inband_ssl;
@@ -529,5 +531,5 @@ mn_pi_mailbox_properties_get_contents (MNPIMailboxProperties * self, gboolean *
if (port)
*port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(self->port_spin[_ssl ? 2 : (_inband_ssl ? 1 : 0)]));
}}
-#line 533 "mn-pi-mailbox-properties.c"
+#line 535 "mn-pi-mailbox-properties.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-pi-mailbox-properties.gob b/src/mn-pi-mailbox-properties.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
@@ -151,14 +153,14 @@ class MN:PI:Mailbox:Properties from Gtk:VBox (interface MN:Mailbox:Properties)
GTK_ENTRY(self->password_entry),
NULL);
- g_signal_connect(G_OBJECT(expander), "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
+ g_signal_connect(expander, "notify::expanded", G_CALLBACK(self_notify_expanded_h), self);
for (i = 0; i < 3; i++)
- g_signal_connect(G_OBJECT(self->conn_radio[i]), "toggled", G_CALLBACK(self_radio_toggled_h), self);
+ g_signal_connect(self->conn_radio[i], "toggled", G_CALLBACK(self_radio_toggled_h), self);
- g_signal_connect(G_OBJECT(self->hostname_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(self->username_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
- g_signal_connect(G_OBJECT(self->password_entry), "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(self->hostname_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(self->username_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
+ g_signal_connect(self->password_entry, "changed", G_CALLBACK(self_entry_changed_h), self);
return object;
}
diff --git a/src/mn-pi-mailbox-properties.h b/src/mn-pi-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-pop3-mailbox-private.h b/src/mn-pop3-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_POP3_MAILBOX_PRIVATE_H__
#define __MN_POP3_MAILBOX_PRIVATE_H__
@@ -10,9 +10,9 @@ extern "C" {
#endif /* __cplusplus */
struct _MNPOP3MailboxPrivate {
-#line 106 "mn-pop3-mailbox.gob"
+#line 122 "mn-pop3-mailbox.gob"
int login_delay;
-#line 107 "mn-pop3-mailbox.gob"
+#line 123 "mn-pop3-mailbox.gob"
GTimer * authentication_timer;
#line 18 "mn-pop3-mailbox-private.h"
};
diff --git a/src/mn-pop3-mailbox-properties-private.h b/src/mn-pop3-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__
#define __MN_POP3_MAILBOX_PROPERTIES_PRIVATE_H__
diff --git a/src/mn-pop3-mailbox-properties.c b/src/mn-pop3-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-pop3-mailbox-properties.h"
#include "mn-pop3-mailbox-properties-private.h"
@@ -21,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-pop3-mailbox-properties.gob"
+#line 24 "mn-pop3-mailbox-properties.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -30,7 +32,7 @@
#include "mn-auth-combo-box.h"
#include "mn-util.h"
-#line 34 "mn-pop3-mailbox-properties.c"
+#line 36 "mn-pop3-mailbox-properties.c"
/* self casting macros */
#define SELF(x) MN_POP3_MAILBOX_PROPERTIES(x)
#define SELF_CONST(x) MN_POP3_MAILBOX_PROPERTIES_CONST(x)
@@ -68,11 +70,11 @@ static MNPIMailboxPropertiesClass *parent_class = NULL;
static void
___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
{
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
iface->set_uri = self_set_uri;
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
iface->get_uri = self_get_uri;
-#line 76 "mn-pop3-mailbox-properties.c"
+#line 78 "mn-pop3-mailbox-properties.c"
}
GType
@@ -132,19 +134,19 @@ mn_pop3_mailbox_properties_init (MNPOP3MailboxProperties * o G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::init"
}
#undef __GOB_FUNCTION__
-#line 60 "mn-pop3-mailbox-properties.gob"
+#line 62 "mn-pop3-mailbox-properties.gob"
static void
mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GNUC_UNUSED)
-#line 139 "mn-pop3-mailbox-properties.c"
+#line 141 "mn-pop3-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
parent_class = g_type_class_ref (MN_TYPE_PI_MAILBOX_PROPERTIES);
-#line 69 "mn-pop3-mailbox-properties.gob"
+#line 71 "mn-pop3-mailbox-properties.gob"
g_object_class->constructor = ___2_mn_pop3_mailbox_properties_constructor;
-#line 148 "mn-pop3-mailbox-properties.c"
+#line 150 "mn-pop3-mailbox-properties.c"
g_object_class->get_property = ___object_get_property;
{
g_object_class_override_property (g_object_class,
@@ -152,7 +154,7 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
"complete");
}
{
-#line 61 "mn-pop3-mailbox-properties.gob"
+#line 63 "mn-pop3-mailbox-properties.gob"
MNPIMailboxPropertiesClass *pi_class = MN_PI_MAILBOX_PROPERTIES_CLASS(class);
@@ -160,7 +162,7 @@ mn_pop3_mailbox_properties_class_init (MNPOP3MailboxPropertiesClass * class G_GN
pi_class->default_port[0] = mn_uri_get_default_port("pop");
pi_class->default_port[1] = mn_uri_get_default_port("pops");
-#line 164 "mn-pop3-mailbox-properties.c"
+#line 166 "mn-pop3-mailbox-properties.c"
}
}
#undef __GOB_FUNCTION__
@@ -179,7 +181,7 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_COMPLETE:
{
-#line 35 "mn-pop3-mailbox-properties.gob"
+#line 37 "mn-pop3-mailbox-properties.gob"
MNPIMailboxProperties *pi = MN_PI_MAILBOX_PROPERTIES(self);
gboolean complete;
@@ -204,7 +206,7 @@ ___object_get_property (GObject *object,
g_value_set_boolean(VAL, complete);
-#line 208 "mn-pop3-mailbox-properties.c"
+#line 210 "mn-pop3-mailbox-properties.c"
}
break;
default:
@@ -221,10 +223,10 @@ ___object_get_property (GObject *object,
-#line 69 "mn-pop3-mailbox-properties.gob"
+#line 71 "mn-pop3-mailbox-properties.gob"
static GObject *
___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 228 "mn-pop3-mailbox-properties.c"
+#line 230 "mn-pop3-mailbox-properties.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -232,7 +234,7 @@ ___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::constructor"
{
-#line 71 "mn-pop3-mailbox-properties.gob"
+#line 73 "mn-pop3-mailbox-properties.gob"
GObject *object;
Self *self;
@@ -255,27 +257,27 @@ ___2_mn_pop3_mailbox_properties_constructor (GType type G_GNUC_UNUSED, guint n_c
return object;
}}
-#line 259 "mn-pop3-mailbox-properties.c"
+#line 261 "mn-pop3-mailbox-properties.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
static gboolean
mn_pop3_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * uri)
-#line 266 "mn-pop3-mailbox-properties.c"
+#line 268 "mn-pop3-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::set_uri"
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
g_return_val_if_fail (properties != NULL, (gboolean )0);
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (gboolean )0);
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 94 "mn-pop3-mailbox-properties.gob"
+#line 96 "mn-pop3-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 277 "mn-pop3-mailbox-properties.c"
+#line 279 "mn-pop3-mailbox-properties.c"
{
-#line 97 "mn-pop3-mailbox-properties.gob"
+#line 99 "mn-pop3-mailbox-properties.gob"
if (MN_URI_IS_POP(uri))
{
@@ -292,22 +294,22 @@ mn_pop3_mailbox_properties_set_uri (MNMailboxProperties * properties, MNURI * ur
else
return FALSE;
}}
-#line 296 "mn-pop3-mailbox-properties.c"
+#line 298 "mn-pop3-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
static MNURI *
mn_pop3_mailbox_properties_get_uri (MNMailboxProperties * properties)
-#line 302 "mn-pop3-mailbox-properties.c"
+#line 304 "mn-pop3-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox:Properties::get_uri"
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
g_return_val_if_fail (properties != NULL, (MNURI * )0);
-#line 114 "mn-pop3-mailbox-properties.gob"
+#line 116 "mn-pop3-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (properties), (MNURI * )0);
-#line 309 "mn-pop3-mailbox-properties.c"
+#line 311 "mn-pop3-mailbox-properties.c"
{
-#line 116 "mn-pop3-mailbox-properties.gob"
+#line 118 "mn-pop3-mailbox-properties.gob"
gboolean ssl;
gboolean inband_ssl;
@@ -332,5 +334,5 @@ mn_pop3_mailbox_properties_get_uri (MNMailboxProperties * properties)
return uri;
}}
-#line 336 "mn-pop3-mailbox-properties.c"
+#line 338 "mn-pop3-mailbox-properties.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox-properties.gob b/src/mn-pop3-mailbox-properties.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-pi-mailbox-properties.h"
%}
diff --git a/src/mn-pop3-mailbox-properties.h b/src/mn-pop3-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-pop3-mailbox.c b/src/mn-pop3-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -21,7 +21,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 31 "mn-pop3-mailbox.gob"
+#line 33 "mn-pop3-mailbox.gob"
#include "config.h"
#include <stdio.h>
@@ -36,6 +36,9 @@
#include "mn-client-session.h"
#include "mn-util.h"
#include "mn-md5.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
enum
{
@@ -50,7 +53,12 @@
STATE_APOP,
STATE_USER,
STATE_PASS,
+#ifdef WITH_MIME
+ STATE_LIST,
+ STATE_RETR,
+#else /* WITH_MIME */
STATE_STAT,
+#endif
STATE_QUIT
};
@@ -77,6 +85,12 @@
#endif
gboolean authenticated;
gboolean login_delay_user;
+#ifdef WITH_MIME
+ GSList *message_numbers;
+ GSList *current_message_number;
+ GSList *messages;
+ GString *current_message;
+#endif
};
typedef enum
@@ -94,7 +108,7 @@
char *arguments;
};
-#line 98 "mn-pop3-mailbox.c"
+#line 112 "mn-pop3-mailbox.c"
/* self casting macros */
#define SELF(x) MN_POP3_MAILBOX(x)
#define SELF_CONST(x) MN_POP3_MAILBOX_CONST(x)
@@ -126,11 +140,15 @@ static int mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSes
static int mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_enter_retr_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_handle_retr_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_enter_stat_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
-static void ___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
+static void ___19_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox) G_GNUC_UNUSED;
static void mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static MNClientSessionResponse * mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static void mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv) G_GNUC_UNUSED;
@@ -138,7 +156,9 @@ static int mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClien
static int mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static int mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop) G_GNUC_UNUSED;
static int mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
+static int mn_pop3_mailbox_session_check_mail (MNClientSessionPrivate * priv) G_GNUC_UNUSED;
static void mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response) G_GNUC_UNUSED;
+static void mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response) G_GNUC_UNUSED;
/* pointer to the class of our parent */
static MNMailboxClass *parent_class = NULL;
@@ -157,6 +177,10 @@ static MNMailboxClass *parent_class = NULL;
#define self_handle_user_cb mn_pop3_mailbox_handle_user_cb
#define self_enter_pass_cb mn_pop3_mailbox_enter_pass_cb
#define self_handle_pass_cb mn_pop3_mailbox_handle_pass_cb
+#define self_enter_list_cb mn_pop3_mailbox_enter_list_cb
+#define self_handle_list_cb mn_pop3_mailbox_handle_list_cb
+#define self_enter_retr_cb mn_pop3_mailbox_enter_retr_cb
+#define self_handle_retr_cb mn_pop3_mailbox_handle_retr_cb
#define self_enter_stat_cb mn_pop3_mailbox_enter_stat_cb
#define self_handle_stat_cb mn_pop3_mailbox_handle_stat_cb
#define self_enter_quit_cb mn_pop3_mailbox_enter_quit_cb
@@ -168,7 +192,9 @@ static MNMailboxClass *parent_class = NULL;
#define self_session_authenticate mn_pop3_mailbox_session_authenticate
#define self_session_authenticate_fallback mn_pop3_mailbox_session_authenticate_fallback
#define self_session_authenticated mn_pop3_mailbox_session_authenticated
+#define self_session_check_mail mn_pop3_mailbox_session_check_mail
#define self_session_set_error_from_arguments mn_pop3_mailbox_session_set_error_from_arguments
+#define self_handle_list_response mn_pop3_mailbox_handle_list_response
GType
mn_pop3_mailbox_get_type (void)
{
@@ -216,11 +242,13 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::finalize"
- MNPOP3Mailbox *self G_GNUC_UNUSED = MN_POP3_MAILBOX (obj_self);
- gpointer priv = self->_priv;
+ MNPOP3Mailbox *self G_GNUC_UNUSED = MN_POP3_MAILBOX (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
- g_free (priv);
+#line 123 "mn-pop3-mailbox.gob"
+ if(self->_priv->authentication_timer) { g_timer_destroy ((gpointer) self->_priv->authentication_timer); self->_priv->authentication_timer = NULL; }
+#line 252 "mn-pop3-mailbox.c"
}
#undef __GOB_FUNCTION__
@@ -228,44 +256,46 @@ static void
mn_pop3_mailbox_init (MNPOP3Mailbox * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::init"
- o->_priv = g_new0 (MNPOP3MailboxPrivate, 1);
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNPOP3MailboxPrivate);
}
#undef __GOB_FUNCTION__
-#line 109 "mn-pop3-mailbox.gob"
+#line 125 "mn-pop3-mailbox.gob"
static void
mn_pop3_mailbox_class_init (MNPOP3MailboxClass * class G_GNUC_UNUSED)
-#line 238 "mn-pop3-mailbox.c"
+#line 266 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+
+ g_type_class_add_private(class,sizeof(MNPOP3MailboxPrivate));
MNMailboxClass *mn_mailbox_class = (MNMailboxClass *)class;
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 114 "mn-pop3-mailbox.gob"
+#line 130 "mn-pop3-mailbox.gob"
g_object_class->constructor = ___2_mn_pop3_mailbox_constructor;
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
mn_mailbox_class->impl_is = ___3_mn_pop3_mailbox_impl_is;
-#line 480 "mn-pop3-mailbox.gob"
- mn_mailbox_class->impl_threaded_check = ___15_mn_pop3_mailbox_impl_threaded_check;
-#line 252 "mn-pop3-mailbox.c"
+#line 618 "mn-pop3-mailbox.gob"
+ mn_mailbox_class->impl_threaded_check = ___19_mn_pop3_mailbox_impl_threaded_check;
+#line 282 "mn-pop3-mailbox.c"
g_object_class->finalize = ___finalize;
{
-#line 110 "mn-pop3-mailbox.gob"
+#line 126 "mn-pop3-mailbox.gob"
MN_MAILBOX_CLASS(class)->format = "POP3";
-#line 259 "mn-pop3-mailbox.c"
+#line 289 "mn-pop3-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 114 "mn-pop3-mailbox.gob"
+#line 130 "mn-pop3-mailbox.gob"
static GObject *
___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 269 "mn-pop3-mailbox.c"
+#line 299 "mn-pop3-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -273,7 +303,7 @@ ___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::constructor"
{
-#line 116 "mn-pop3-mailbox.gob"
+#line 132 "mn-pop3-mailbox.gob"
GObject *object;
MNMailbox *mailbox;
@@ -288,49 +318,49 @@ ___2_mn_pop3_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_pr
return object;
}}
-#line 292 "mn-pop3-mailbox.c"
+#line 322 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
static gboolean
___3_mn_pop3_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 299 "mn-pop3-mailbox.c"
+#line 329 "mn-pop3-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::impl_is"
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 131 "mn-pop3-mailbox.gob"
+#line 147 "mn-pop3-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 310 "mn-pop3-mailbox.c"
+#line 340 "mn-pop3-mailbox.c"
{
-#line 133 "mn-pop3-mailbox.gob"
+#line 149 "mn-pop3-mailbox.gob"
return MN_URI_IS_POP(uri);
}}
-#line 316 "mn-pop3-mailbox.c"
+#line 346 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 323 "mn-pop3-mailbox.c"
+#line 353 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_greeting_cb"
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 137 "mn-pop3-mailbox.gob"
+#line 153 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 332 "mn-pop3-mailbox.c"
+#line 362 "mn-pop3-mailbox.c"
{
-#line 141 "mn-pop3-mailbox.gob"
+#line 157 "mn-pop3-mailbox.gob"
priv->session = session;
@@ -357,49 +387,49 @@ mn_pop3_mailbox_handle_greeting_cb (MNClientSession * session, MNClientSessionRe
default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}}
-#line 361 "mn-pop3-mailbox.c"
+#line 391 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 168 "mn-pop3-mailbox.gob"
+#line 184 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_capa_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 367 "mn-pop3-mailbox.c"
+#line 397 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_capa_cb"
-#line 168 "mn-pop3-mailbox.gob"
+#line 184 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 168 "mn-pop3-mailbox.gob"
+#line 184 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 374 "mn-pop3-mailbox.c"
+#line 404 "mn-pop3-mailbox.c"
{
-#line 171 "mn-pop3-mailbox.gob"
+#line 187 "mn-pop3-mailbox.gob"
return mn_client_session_write(session, "CAPA");
}}
-#line 380 "mn-pop3-mailbox.c"
+#line 410 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 386 "mn-pop3-mailbox.c"
+#line 416 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_capa_cb"
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 175 "mn-pop3-mailbox.gob"
+#line 191 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 395 "mn-pop3-mailbox.c"
+#line 425 "mn-pop3-mailbox.c"
{
-#line 179 "mn-pop3-mailbox.gob"
+#line 195 "mn-pop3-mailbox.gob"
+ self_handle_list_response(priv, response);
+
switch (response->type)
{
case RESPONSE_OK:
- priv->in_list = TRUE;
-
eel_g_slist_free_deep(priv->auth_mechanisms);
priv->auth_mechanisms = NULL;
priv->self->_priv->login_delay = 0;
@@ -412,9 +442,8 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
case RESPONSE_ERR:
case RESPONSE_LIST_END:
- priv->in_list = FALSE;
if (priv->authenticated)
- return STATE_STAT;
+ return self_session_check_mail(priv);
#ifdef WITH_SSL
if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -476,26 +505,25 @@ mn_pop3_mailbox_handle_capa_cb (MNClientSession * session, MNClientSessionRespon
return MN_CLIENT_SESSION_RESULT_CONTINUE;
default:
- priv->in_list = FALSE;
return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}}
-#line 484 "mn-pop3-mailbox.c"
+#line 512 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 266 "mn-pop3-mailbox.gob"
+#line 280 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 490 "mn-pop3-mailbox.c"
+#line 518 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stls_cb"
-#line 266 "mn-pop3-mailbox.gob"
+#line 280 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 266 "mn-pop3-mailbox.gob"
+#line 280 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 497 "mn-pop3-mailbox.c"
+#line 525 "mn-pop3-mailbox.c"
{
-#line 269 "mn-pop3-mailbox.gob"
+#line 283 "mn-pop3-mailbox.gob"
#ifdef WITH_SSL
return mn_client_session_write(session, "STLS");
@@ -503,24 +531,24 @@ mn_pop3_mailbox_enter_stls_cb (MNClientSession * session, MNClientSessionPrivate
g_return_val_if_reached(0);
#endif /* WITH_SSL */
}}
-#line 507 "mn-pop3-mailbox.c"
+#line 535 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 513 "mn-pop3-mailbox.c"
+#line 541 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stls_cb"
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 277 "mn-pop3-mailbox.gob"
+#line 291 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 522 "mn-pop3-mailbox.c"
+#line 550 "mn-pop3-mailbox.c"
{
-#line 281 "mn-pop3-mailbox.gob"
+#line 295 "mn-pop3-mailbox.gob"
#ifdef WITH_SSL
switch (response->type)
@@ -541,22 +569,22 @@ mn_pop3_mailbox_handle_stls_cb (MNClientSession * session, MNClientSessionRespon
g_return_val_if_reached(0);
#endif /* WITH_SSL */
}}
-#line 545 "mn-pop3-mailbox.c"
+#line 573 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 302 "mn-pop3-mailbox.gob"
+#line 316 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 551 "mn-pop3-mailbox.c"
+#line 579 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_auth_cb"
-#line 302 "mn-pop3-mailbox.gob"
+#line 316 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 302 "mn-pop3-mailbox.gob"
+#line 316 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 558 "mn-pop3-mailbox.c"
+#line 586 "mn-pop3-mailbox.c"
{
-#line 305 "mn-pop3-mailbox.gob"
+#line 319 "mn-pop3-mailbox.gob"
#ifdef WITH_SASL
if (mn_client_session_sasl_authentication_start(priv->session,
@@ -571,24 +599,24 @@ mn_pop3_mailbox_enter_auth_cb (MNClientSession * session, MNClientSessionPrivate
g_return_val_if_reached(0);
#endif /* WITH_SASL */
}}
-#line 575 "mn-pop3-mailbox.c"
+#line 603 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 581 "mn-pop3-mailbox.c"
+#line 609 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_auth_cb"
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 320 "mn-pop3-mailbox.gob"
+#line 334 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 590 "mn-pop3-mailbox.c"
+#line 618 "mn-pop3-mailbox.c"
{
-#line 324 "mn-pop3-mailbox.gob"
+#line 338 "mn-pop3-mailbox.gob"
#ifdef WITH_SASL
switch (response->type)
@@ -611,22 +639,22 @@ mn_pop3_mailbox_handle_auth_cb (MNClientSession * session, MNClientSessionRespon
g_return_val_if_reached(0);
#endif /* WITH_SASL */
}}
-#line 615 "mn-pop3-mailbox.c"
+#line 643 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 347 "mn-pop3-mailbox.gob"
+#line 361 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 621 "mn-pop3-mailbox.c"
+#line 649 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_apop_cb"
-#line 347 "mn-pop3-mailbox.gob"
+#line 361 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 347 "mn-pop3-mailbox.gob"
+#line 361 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 628 "mn-pop3-mailbox.c"
+#line 656 "mn-pop3-mailbox.c"
{
-#line 350 "mn-pop3-mailbox.gob"
+#line 364 "mn-pop3-mailbox.gob"
MNMD5Context context;
char buf[33];
@@ -640,24 +668,24 @@ mn_pop3_mailbox_enter_apop_cb (MNClientSession * session, MNClientSessionPrivate
return mn_client_session_write(session, "APOP %s %s", priv->mailbox->uri->username, buf);
}}
-#line 644 "mn-pop3-mailbox.c"
+#line 672 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 650 "mn-pop3-mailbox.c"
+#line 678 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_apop_cb"
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 364 "mn-pop3-mailbox.gob"
+#line 378 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 659 "mn-pop3-mailbox.c"
+#line 687 "mn-pop3-mailbox.c"
{
-#line 368 "mn-pop3-mailbox.gob"
+#line 382 "mn-pop3-mailbox.gob"
switch (response->type)
{
@@ -671,43 +699,43 @@ mn_pop3_mailbox_handle_apop_cb (MNClientSession * session, MNClientSessionRespon
return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}}
-#line 675 "mn-pop3-mailbox.c"
+#line 703 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 382 "mn-pop3-mailbox.gob"
+#line 396 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_user_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 681 "mn-pop3-mailbox.c"
+#line 709 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_user_cb"
-#line 382 "mn-pop3-mailbox.gob"
+#line 396 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 382 "mn-pop3-mailbox.gob"
+#line 396 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 688 "mn-pop3-mailbox.c"
+#line 716 "mn-pop3-mailbox.c"
{
-#line 385 "mn-pop3-mailbox.gob"
+#line 399 "mn-pop3-mailbox.gob"
return mn_client_session_write(session, "USER %s", priv->mailbox->uri->username);
}}
-#line 694 "mn-pop3-mailbox.c"
+#line 722 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 700 "mn-pop3-mailbox.c"
+#line 728 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_user_cb"
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 389 "mn-pop3-mailbox.gob"
+#line 403 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 709 "mn-pop3-mailbox.c"
+#line 737 "mn-pop3-mailbox.c"
{
-#line 393 "mn-pop3-mailbox.gob"
+#line 407 "mn-pop3-mailbox.gob"
switch (response->type)
{
@@ -716,43 +744,43 @@ mn_pop3_mailbox_handle_user_cb (MNClientSession * session, MNClientSessionRespon
default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}}
-#line 720 "mn-pop3-mailbox.c"
+#line 748 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 402 "mn-pop3-mailbox.gob"
+#line 416 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_pass_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 726 "mn-pop3-mailbox.c"
+#line 754 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_pass_cb"
-#line 402 "mn-pop3-mailbox.gob"
+#line 416 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 402 "mn-pop3-mailbox.gob"
+#line 416 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 733 "mn-pop3-mailbox.c"
+#line 761 "mn-pop3-mailbox.c"
{
-#line 405 "mn-pop3-mailbox.gob"
+#line 419 "mn-pop3-mailbox.gob"
return mn_client_session_write(session, "PASS %s", priv->mailbox->uri->password);
}}
-#line 739 "mn-pop3-mailbox.c"
+#line 767 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 745 "mn-pop3-mailbox.c"
+#line 773 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_pass_cb"
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 409 "mn-pop3-mailbox.gob"
+#line 423 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 754 "mn-pop3-mailbox.c"
+#line 782 "mn-pop3-mailbox.c"
{
-#line 413 "mn-pop3-mailbox.gob"
+#line 427 "mn-pop3-mailbox.gob"
switch (response->type)
{
@@ -761,44 +789,215 @@ mn_pop3_mailbox_handle_pass_cb (MNClientSession * session, MNClientSessionRespon
default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}}
-#line 765 "mn-pop3-mailbox.c"
+#line 793 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 436 "mn-pop3-mailbox.gob"
+static int
+mn_pop3_mailbox_enter_list_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 799 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_list_cb"
+#line 436 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 436 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 806 "mn-pop3-mailbox.c"
+{
+#line 439 "mn-pop3-mailbox.gob"
+
+#ifdef WITH_MIME
+ return mn_client_session_write(session, "LIST");
+#else
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 816 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 422 "mn-pop3-mailbox.gob"
+#line 447 "mn-pop3-mailbox.gob"
+static int
+mn_pop3_mailbox_handle_list_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 822 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_cb"
+#line 447 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 447 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (response != NULL, (int )0);
+#line 447 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 831 "mn-pop3-mailbox.c"
+{
+#line 451 "mn-pop3-mailbox.gob"
+
+#ifdef WITH_MIME
+ self_handle_list_response(priv, response);
+
+ switch (response->type)
+ {
+ case RESPONSE_OK:
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ case RESPONSE_LIST_END:
+ priv->current_message_number = priv->message_numbers;
+ return STATE_RETR;
+
+ case RESPONSE_ERR:
+ return RESULT_ERROR_END;
+
+ case RESPONSE_LIST_ITEM:
+ {
+ int num;
+ int size;
+
+ if (sscanf(response->arguments, "%d %d", &num, &size) == 2)
+ priv->message_numbers = g_slist_append(priv->message_numbers, GINT_TO_POINTER(num));
+ else /* compliance error */
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ default:
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 869 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 487 "mn-pop3-mailbox.gob"
+static int
+mn_pop3_mailbox_enter_retr_cb (MNClientSession * session, MNClientSessionPrivate * priv)
+#line 875 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_retr_cb"
+#line 487 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 487 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 882 "mn-pop3-mailbox.c"
+{
+#line 490 "mn-pop3-mailbox.gob"
+
+#ifdef WITH_MIME
+ if (priv->current_message_number)
+ return mn_client_session_write(session, "RETR %i", GPOINTER_TO_INT(priv->current_message_number->data));
+ else
+ {
+ GDK_THREADS_ENTER();
+ mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+ mn_mailbox_set_messages(priv->mailbox, priv->messages);
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ return STATE_QUIT;
+ }
+#else
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 903 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 509 "mn-pop3-mailbox.gob"
+static int
+mn_pop3_mailbox_handle_retr_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
+#line 909 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_retr_cb"
+#line 509 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (session != NULL, (int )0);
+#line 509 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (response != NULL, (int )0);
+#line 509 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 918 "mn-pop3-mailbox.c"
+{
+#line 513 "mn-pop3-mailbox.gob"
+
+#ifdef WITH_MIME
+ self_handle_list_response(priv, response);
+
+ switch (response->type)
+ {
+ case RESPONSE_OK:
+ if (priv->current_message)
+ g_string_free(priv->current_message, TRUE);
+ priv->current_message = g_string_new(NULL);
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ case RESPONSE_LIST_END:
+ priv->messages = g_slist_append(priv->messages,
+ mn_message_new_from_buffer(priv->mailbox->uri,
+ priv->current_message->str,
+ priv->current_message->len));
+ priv->current_message_number = priv->current_message_number->next;
+ return STATE_RETR;
+
+ case RESPONSE_ERR:
+ priv->messages = g_slist_append(priv->messages,
+ mn_message_new_from_error(priv->mailbox->uri,
+ response->arguments ? response->arguments : _("unknown error")));
+ priv->current_message_number = priv->current_message_number->next;
+ return STATE_RETR;
+
+ case RESPONSE_LIST_ITEM:
+ g_string_append_printf(priv->current_message, "%s\n", response->arguments);
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ default:
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+#else
+ g_return_val_if_reached(0);
+#endif
+ }}
+#line 959 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 552 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_stat_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 771 "mn-pop3-mailbox.c"
+#line 965 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_stat_cb"
-#line 422 "mn-pop3-mailbox.gob"
+#line 552 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 422 "mn-pop3-mailbox.gob"
+#line 552 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 778 "mn-pop3-mailbox.c"
+#line 972 "mn-pop3-mailbox.c"
{
-#line 425 "mn-pop3-mailbox.gob"
+#line 555 "mn-pop3-mailbox.gob"
+#ifndef WITH_MIME
return mn_client_session_write(session, "STAT");
+#else
+ g_return_val_if_reached(0);
+#endif
}}
-#line 784 "mn-pop3-mailbox.c"
+#line 982 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 790 "mn-pop3-mailbox.c"
+#line 988 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_stat_cb"
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 429 "mn-pop3-mailbox.gob"
+#line 563 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 799 "mn-pop3-mailbox.c"
+#line 997 "mn-pop3-mailbox.c"
{
-#line 433 "mn-pop3-mailbox.gob"
+#line 567 "mn-pop3-mailbox.gob"
+#ifndef WITH_MIME
switch (response->type)
{
case RESPONSE_OK:
@@ -823,44 +1022,47 @@ mn_pop3_mailbox_handle_stat_cb (MNClientSession * session, MNClientSessionRespon
case RESPONSE_ERR: return RESULT_ERROR_QUIT;
default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
+#else /* ! WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
}}
-#line 828 "mn-pop3-mailbox.c"
+#line 1030 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 460 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_enter_quit_cb (MNClientSession * session, MNClientSessionPrivate * priv)
-#line 834 "mn-pop3-mailbox.c"
+#line 1036 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::enter_quit_cb"
-#line 460 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 460 "mn-pop3-mailbox.gob"
+#line 598 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 841 "mn-pop3-mailbox.c"
+#line 1043 "mn-pop3-mailbox.c"
{
-#line 463 "mn-pop3-mailbox.gob"
+#line 601 "mn-pop3-mailbox.gob"
return mn_client_session_write(session, "QUIT");
}}
-#line 847 "mn-pop3-mailbox.c"
+#line 1049 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 853 "mn-pop3-mailbox.c"
+#line 1055 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_quit_cb"
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 467 "mn-pop3-mailbox.gob"
+#line 605 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 862 "mn-pop3-mailbox.c"
+#line 1064 "mn-pop3-mailbox.c"
{
-#line 471 "mn-pop3-mailbox.gob"
+#line 609 "mn-pop3-mailbox.gob"
switch (response->type)
{
@@ -869,25 +1071,25 @@ mn_pop3_mailbox_handle_quit_cb (MNClientSession * session, MNClientSessionRespon
default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}}
-#line 873 "mn-pop3-mailbox.c"
+#line 1075 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 480 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
static void
-___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
-#line 879 "mn-pop3-mailbox.c"
+___19_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
+#line 1081 "mn-pop3-mailbox.c"
#define PARENT_HANDLER(___mailbox) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___mailbox); }
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::impl_threaded_check"
-#line 480 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
g_return_if_fail (mailbox != NULL);
-#line 480 "mn-pop3-mailbox.gob"
+#line 618 "mn-pop3-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (mailbox));
-#line 889 "mn-pop3-mailbox.c"
+#line 1091 "mn-pop3-mailbox.c"
{
-#line 482 "mn-pop3-mailbox.gob"
+#line 620 "mn-pop3-mailbox.gob"
Self *self = SELF(mailbox);
MNClientSessionState states[] = {
@@ -902,7 +1104,12 @@ ___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
{ STATE_APOP, self_enter_apop_cb, self_handle_apop_cb },
{ STATE_USER, self_enter_user_cb, self_handle_user_cb },
{ STATE_PASS, self_enter_pass_cb, self_handle_pass_cb },
+#ifdef WITH_MIME
+ { STATE_LIST, self_enter_list_cb, self_handle_list_cb },
+ { STATE_RETR, self_enter_retr_cb, self_handle_retr_cb },
+#else /* WITH_MIME */
{ STATE_STAT, self_enter_stat_cb, self_handle_stat_cb },
+#endif
{ STATE_QUIT, self_enter_quit_cb, self_handle_quit_cb },
MN_CLIENT_SESSION_STATES_END
@@ -967,47 +1174,53 @@ ___15_mn_pop3_mailbox_impl_threaded_check (MNMailbox * mailbox G_GNUC_UNUSED)
g_free(priv.apop_timestamp);
eel_g_slist_free_deep(priv.auth_mechanisms);
+#ifdef WITH_MIME
+ g_slist_free(priv.message_numbers);
+ mn_g_object_slist_free(priv.messages);
+ if (priv.current_message)
+ g_string_free(priv.current_message, TRUE);
+#endif
}}
-#line 972 "mn-pop3-mailbox.c"
+#line 1185 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
static void
mn_pop3_mailbox_notice_cb (MNClientSession * session, const char * str, MNClientSessionPrivate * priv)
-#line 979 "mn-pop3-mailbox.c"
+#line 1192 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::notice_cb"
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
g_return_if_fail (session != NULL);
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
g_return_if_fail (str != NULL);
-#line 563 "mn-pop3-mailbox.gob"
+#line 712 "mn-pop3-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 988 "mn-pop3-mailbox.c"
+#line 1201 "mn-pop3-mailbox.c"
{
-#line 567 "mn-pop3-mailbox.gob"
+#line 716 "mn-pop3-mailbox.gob"
mn_mailbox_notice(priv->mailbox, "%s", str);
}}
-#line 994 "mn-pop3-mailbox.c"
+#line 1207 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
static MNClientSessionResponse *
mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input, MNClientSessionPrivate * priv)
-#line 1000 "mn-pop3-mailbox.c"
+#line 1213 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_new_cb"
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (MNClientSessionResponse * )0);
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
g_return_val_if_fail (input != NULL, (MNClientSessionResponse * )0);
-#line 571 "mn-pop3-mailbox.gob"
+#line 720 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (MNClientSessionResponse * )0);
-#line 1009 "mn-pop3-mailbox.c"
+#line 1222 "mn-pop3-mailbox.c"
{
-#line 575 "mn-pop3-mailbox.gob"
+#line 724 "mn-pop3-mailbox.gob"
MNClientSessionResponse *response = NULL;
@@ -1066,46 +1279,46 @@ mn_pop3_mailbox_response_new_cb (MNClientSession * session, const char * input,
return response;
}}
-#line 1070 "mn-pop3-mailbox.c"
+#line 1283 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
static void
mn_pop3_mailbox_response_free_cb (MNClientSession * session, MNClientSessionResponse * response, MNClientSessionPrivate * priv)
-#line 1076 "mn-pop3-mailbox.c"
+#line 1289 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::response_free_cb"
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
g_return_if_fail (session != NULL);
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
g_return_if_fail (response != NULL);
-#line 634 "mn-pop3-mailbox.gob"
+#line 783 "mn-pop3-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 1085 "mn-pop3-mailbox.c"
+#line 1298 "mn-pop3-mailbox.c"
{
-#line 638 "mn-pop3-mailbox.gob"
+#line 787 "mn-pop3-mailbox.gob"
g_free(response->arguments);
g_free(response);
}}
-#line 1092 "mn-pop3-mailbox.c"
+#line 1305 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionResponse * response, int result, MNClientSessionPrivate * priv)
-#line 1098 "mn-pop3-mailbox.c"
+#line 1311 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::custom_handler_cb"
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
g_return_val_if_fail (session != NULL, (int )0);
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
g_return_val_if_fail (response != NULL, (int )0);
-#line 643 "mn-pop3-mailbox.gob"
+#line 792 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1107 "mn-pop3-mailbox.c"
+#line 1320 "mn-pop3-mailbox.c"
{
-#line 648 "mn-pop3-mailbox.gob"
+#line 797 "mn-pop3-mailbox.gob"
switch (result)
{
@@ -1121,20 +1334,20 @@ mn_pop3_mailbox_custom_handler_cb (MNClientSession * session, MNClientSessionRes
g_return_val_if_reached(0);
}
}}
-#line 1125 "mn-pop3-mailbox.c"
+#line 1338 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 664 "mn-pop3-mailbox.gob"
+#line 813 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
-#line 1131 "mn-pop3-mailbox.c"
+#line 1344 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate"
-#line 664 "mn-pop3-mailbox.gob"
+#line 813 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1136 "mn-pop3-mailbox.c"
+#line 1349 "mn-pop3-mailbox.c"
{
-#line 666 "mn-pop3-mailbox.gob"
+#line 815 "mn-pop3-mailbox.gob"
if (priv->mailbox->uri->authmech)
{
@@ -1170,20 +1383,20 @@ mn_pop3_mailbox_session_authenticate (MNClientSessionPrivate * priv)
return STATE_USER;
}
}}
-#line 1174 "mn-pop3-mailbox.c"
+#line 1387 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 702 "mn-pop3-mailbox.gob"
+#line 851 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gboolean tried_apop)
-#line 1180 "mn-pop3-mailbox.c"
+#line 1393 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticate_fallback"
-#line 702 "mn-pop3-mailbox.gob"
+#line 851 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1185 "mn-pop3-mailbox.c"
+#line 1398 "mn-pop3-mailbox.c"
{
-#line 705 "mn-pop3-mailbox.gob"
+#line 854 "mn-pop3-mailbox.gob"
if (! priv->mailbox->uri->authmech)
{
@@ -1201,20 +1414,20 @@ mn_pop3_mailbox_session_authenticate_fallback (MNClientSessionPrivate * priv, gb
return mn_client_session_error(priv->session, _("authentication failed"));
}}
-#line 1205 "mn-pop3-mailbox.c"
+#line 1418 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 723 "mn-pop3-mailbox.gob"
+#line 872 "mn-pop3-mailbox.gob"
static int
mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
-#line 1211 "mn-pop3-mailbox.c"
+#line 1424 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_authenticated"
-#line 723 "mn-pop3-mailbox.gob"
+#line 872 "mn-pop3-mailbox.gob"
g_return_val_if_fail (priv != NULL, (int )0);
-#line 1216 "mn-pop3-mailbox.c"
+#line 1429 "mn-pop3-mailbox.c"
{
-#line 725 "mn-pop3-mailbox.gob"
+#line 874 "mn-pop3-mailbox.gob"
priv->authenticated = TRUE;
if (priv->self->_priv->login_delay)
@@ -1224,29 +1437,81 @@ mn_pop3_mailbox_session_authenticated (MNClientSessionPrivate * priv)
else
priv->self->_priv->authentication_timer = g_timer_new();
}
- return priv->login_delay_user ? STATE_CAPA : STATE_STAT;
+ return priv->login_delay_user ? STATE_CAPA : self_session_check_mail(priv);
+ }}
+#line 1443 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 886 "mn-pop3-mailbox.gob"
+static int
+mn_pop3_mailbox_session_check_mail (MNClientSessionPrivate * priv)
+#line 1449 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_check_mail"
+#line 886 "mn-pop3-mailbox.gob"
+ g_return_val_if_fail (priv != NULL, (int )0);
+#line 1454 "mn-pop3-mailbox.c"
+{
+#line 888 "mn-pop3-mailbox.gob"
+
+#ifdef WITH_MIME
+ return STATE_LIST;
+#else
+ return STATE_STAT;
+#endif
}}
-#line 1230 "mn-pop3-mailbox.c"
+#line 1464 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
-#line 737 "mn-pop3-mailbox.gob"
+#line 896 "mn-pop3-mailbox.gob"
static void
mn_pop3_mailbox_session_set_error_from_arguments (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
-#line 1236 "mn-pop3-mailbox.c"
+#line 1470 "mn-pop3-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:POP3:Mailbox::session_set_error_from_arguments"
-#line 737 "mn-pop3-mailbox.gob"
+#line 896 "mn-pop3-mailbox.gob"
g_return_if_fail (priv != NULL);
-#line 737 "mn-pop3-mailbox.gob"
+#line 896 "mn-pop3-mailbox.gob"
g_return_if_fail (response != NULL);
-#line 1243 "mn-pop3-mailbox.c"
+#line 1477 "mn-pop3-mailbox.c"
{
-#line 740 "mn-pop3-mailbox.gob"
+#line 899 "mn-pop3-mailbox.gob"
if (response->arguments)
mn_client_session_error(priv->session, "\"%s\"", response->arguments);
else
mn_client_session_error(priv->session, _("unknown server error"));
}}
-#line 1252 "mn-pop3-mailbox.c"
+#line 1486 "mn-pop3-mailbox.c"
+#undef __GOB_FUNCTION__
+
+#line 906 "mn-pop3-mailbox.gob"
+static void
+mn_pop3_mailbox_handle_list_response (MNClientSessionPrivate * priv, MNClientSessionResponse * response)
+#line 1492 "mn-pop3-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:POP3:Mailbox::handle_list_response"
+#line 906 "mn-pop3-mailbox.gob"
+ g_return_if_fail (priv != NULL);
+#line 906 "mn-pop3-mailbox.gob"
+ g_return_if_fail (response != NULL);
+#line 1499 "mn-pop3-mailbox.c"
+{
+#line 909 "mn-pop3-mailbox.gob"
+
+ switch (response->type)
+ {
+ case RESPONSE_OK:
+ priv->in_list = TRUE;
+ break;
+
+ case RESPONSE_LIST_ITEM: /* nop */
+ break;
+
+ default:
+ priv->in_list = FALSE;
+ break;
+ }
+ }}
+#line 1517 "mn-pop3-mailbox.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-pop3-mailbox.gob b/src/mn-pop3-mailbox.gob
@@ -25,6 +25,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -42,6 +44,9 @@
#include "mn-client-session.h"
#include "mn-util.h"
#include "mn-md5.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
enum
{
@@ -56,7 +61,12 @@
STATE_APOP,
STATE_USER,
STATE_PASS,
+#ifdef WITH_MIME
+ STATE_LIST,
+ STATE_RETR,
+#else /* WITH_MIME */
STATE_STAT,
+#endif
STATE_QUIT
};
@@ -83,6 +93,12 @@
#endif
gboolean authenticated;
gboolean login_delay_user;
+#ifdef WITH_MIME
+ GSList *message_numbers;
+ GSList *current_message_number;
+ GSList *messages;
+ GString *current_message;
+#endif
};
typedef enum
@@ -104,7 +120,7 @@
class MN:POP3:Mailbox from MN:Mailbox
{
private int login_delay;
- private GTimer *authentication_timer;
+ private GTimer *authentication_timer destroywith g_timer_destroy;
class_init (class)
{
@@ -177,11 +193,11 @@ class MN:POP3:Mailbox from MN:Mailbox
MNClientSessionResponse *response (check null),
MNClientSessionPrivate *priv (check null))
{
+ self_handle_list_response(priv, response);
+
switch (response->type)
{
case RESPONSE_OK:
- priv->in_list = TRUE;
-
eel_g_slist_free_deep(priv->auth_mechanisms);
priv->auth_mechanisms = NULL;
priv->self->_priv->login_delay = 0;
@@ -194,9 +210,8 @@ class MN:POP3:Mailbox from MN:Mailbox
case RESPONSE_ERR:
case RESPONSE_LIST_END:
- priv->in_list = FALSE;
if (priv->authenticated)
- return STATE_STAT;
+ return self_session_check_mail(priv);
#ifdef WITH_SSL
if (MN_URI_IS_INBAND_SSL(priv->mailbox->uri)
@@ -258,7 +273,6 @@ class MN:POP3:Mailbox from MN:Mailbox
return MN_CLIENT_SESSION_RESULT_CONTINUE;
default:
- priv->in_list = FALSE;
return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
}
@@ -420,10 +434,130 @@ class MN:POP3:Mailbox from MN:Mailbox
}
private int
+ enter_list_cb (MNClientSession *session (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ return mn_client_session_write(session, "LIST");
+#else
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ handle_list_cb (MNClientSession *session (check null),
+ MNClientSessionResponse *response (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ self_handle_list_response(priv, response);
+
+ switch (response->type)
+ {
+ case RESPONSE_OK:
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ case RESPONSE_LIST_END:
+ priv->current_message_number = priv->message_numbers;
+ return STATE_RETR;
+
+ case RESPONSE_ERR:
+ return RESULT_ERROR_END;
+
+ case RESPONSE_LIST_ITEM:
+ {
+ int num;
+ int size;
+
+ if (sscanf(response->arguments, "%d %d", &num, &size) == 2)
+ priv->message_numbers = g_slist_append(priv->message_numbers, GINT_TO_POINTER(num));
+ else /* compliance error */
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ default:
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+#else /* WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ enter_retr_cb (MNClientSession *session (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ if (priv->current_message_number)
+ return mn_client_session_write(session, "RETR %i", GPOINTER_TO_INT(priv->current_message_number->data));
+ else
+ {
+ GDK_THREADS_ENTER();
+ mn_mailbox_set_has_new(priv->mailbox, priv->messages != NULL);
+ mn_mailbox_set_messages(priv->mailbox, priv->messages);
+ gdk_flush();
+ GDK_THREADS_LEAVE();
+
+ return STATE_QUIT;
+ }
+#else
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
+ handle_retr_cb (MNClientSession *session (check null),
+ MNClientSessionResponse *response (check null),
+ MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ self_handle_list_response(priv, response);
+
+ switch (response->type)
+ {
+ case RESPONSE_OK:
+ if (priv->current_message)
+ g_string_free(priv->current_message, TRUE);
+ priv->current_message = g_string_new(NULL);
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ case RESPONSE_LIST_END:
+ priv->messages = g_slist_append(priv->messages,
+ mn_message_new_from_buffer(priv->mailbox->uri,
+ priv->current_message->str,
+ priv->current_message->len));
+ priv->current_message_number = priv->current_message_number->next;
+ return STATE_RETR;
+
+ case RESPONSE_ERR:
+ priv->messages = g_slist_append(priv->messages,
+ mn_message_new_from_error(priv->mailbox->uri,
+ response->arguments ? response->arguments : _("unknown error")));
+ priv->current_message_number = priv->current_message_number->next;
+ return STATE_RETR;
+
+ case RESPONSE_LIST_ITEM:
+ g_string_append_printf(priv->current_message, "%s\n", response->arguments);
+ return MN_CLIENT_SESSION_RESULT_CONTINUE;
+
+ default:
+ return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
+ }
+#else
+ g_return_val_if_reached(0);
+#endif
+ }
+
+ private int
enter_stat_cb (MNClientSession *session (check null),
MNClientSessionPrivate *priv (check null))
{
+#ifndef WITH_MIME
return mn_client_session_write(session, "STAT");
+#else
+ g_return_val_if_reached(0);
+#endif
}
private int
@@ -431,6 +565,7 @@ class MN:POP3:Mailbox from MN:Mailbox
MNClientSessionResponse *response (check null),
MNClientSessionPrivate *priv (check null))
{
+#ifndef WITH_MIME
switch (response->type)
{
case RESPONSE_OK:
@@ -455,6 +590,9 @@ class MN:POP3:Mailbox from MN:Mailbox
case RESPONSE_ERR: return RESULT_ERROR_QUIT;
default: return MN_CLIENT_SESSION_RESULT_BAD_RESPONSE_FOR_CONTEXT;
}
+#else /* ! WITH_MIME */
+ g_return_val_if_reached(0);
+#endif
}
private int
@@ -493,7 +631,12 @@ class MN:POP3:Mailbox from MN:Mailbox
{ STATE_APOP, self_enter_apop_cb, self_handle_apop_cb },
{ STATE_USER, self_enter_user_cb, self_handle_user_cb },
{ STATE_PASS, self_enter_pass_cb, self_handle_pass_cb },
+#ifdef WITH_MIME
+ { STATE_LIST, self_enter_list_cb, self_handle_list_cb },
+ { STATE_RETR, self_enter_retr_cb, self_handle_retr_cb },
+#else /* WITH_MIME */
{ STATE_STAT, self_enter_stat_cb, self_handle_stat_cb },
+#endif
{ STATE_QUIT, self_enter_quit_cb, self_handle_quit_cb },
MN_CLIENT_SESSION_STATES_END
@@ -558,6 +701,12 @@ class MN:POP3:Mailbox from MN:Mailbox
g_free(priv.apop_timestamp);
eel_g_slist_free_deep(priv.auth_mechanisms);
+#ifdef WITH_MIME
+ g_slist_free(priv.message_numbers);
+ mn_g_object_slist_free(priv.messages);
+ if (priv.current_message)
+ g_string_free(priv.current_message, TRUE);
+#endif
}
private void
@@ -731,9 +880,19 @@ class MN:POP3:Mailbox from MN:Mailbox
else
priv->self->_priv->authentication_timer = g_timer_new();
}
- return priv->login_delay_user ? STATE_CAPA : STATE_STAT;
+ return priv->login_delay_user ? STATE_CAPA : self_session_check_mail(priv);
}
+ private int
+ session_check_mail (MNClientSessionPrivate *priv (check null))
+ {
+#ifdef WITH_MIME
+ return STATE_LIST;
+#else
+ return STATE_STAT;
+#endif
+ }
+
private void
session_set_error_from_arguments (MNClientSessionPrivate *priv (check null),
MNClientSessionResponse *response (check null))
@@ -743,4 +902,23 @@ class MN:POP3:Mailbox from MN:Mailbox
else
mn_client_session_error(priv->session, _("unknown server error"));
}
+
+ private void
+ handle_list_response (MNClientSessionPrivate *priv (check null),
+ MNClientSessionResponse *response (check null))
+ {
+ switch (response->type)
+ {
+ case RESPONSE_OK:
+ priv->in_list = TRUE;
+ break;
+
+ case RESPONSE_LIST_ITEM: /* nop */
+ break;
+
+ default:
+ priv->in_list = FALSE;
+ break;
+ }
+ }
}
diff --git a/src/mn-pop3-mailbox.h b/src/mn-pop3-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-properties.c b/src/mn-properties.c
@@ -19,6 +19,7 @@
#include "config.h"
#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
+#include <eel/eel.h>
#include "mn-conf.h"
#include "mn-properties.h"
#include "mn-util.h"
@@ -30,42 +31,62 @@
typedef struct
{
GtkWidget *dialog;
+ GtkWidget *notebook;
- GtkWidget *delay_label;
- GtkWidget *minutes_spin;
- GtkWidget *seconds_spin;
-
+ /* general tab */
GtkWidget *autostart_check;
GtkWidget *blink_check;
+ GtkWidget *command_new_mail_check;
+ GtkWidget *command_new_mail_entry;
+ /* mailboxes tab */
+ GtkWidget *delay_label;
+ GtkWidget *minutes_spin;
+ GtkWidget *seconds_spin;
GtkWidget *scrolled;
GtkWidget *list;
GtkWidget *selected_label;
GtkWidget *remove;
GtkWidget *properties;
- GtkWidget *command_new_mail_check;
- GtkWidget *command_new_mail_entry;
- GtkWidget *command_double_clicked_check;
- GtkWidget *command_double_clicked_entry;
+ /* mail summary popup tab */
+ GtkWidget *summary_enable_check;
+ GtkWidget *summary_autoclose_check;
+ GtkWidget *summary_minutes_spin;
+ GtkWidget *summary_minutes_label;
+ GtkWidget *summary_seconds_spin;
+ GtkWidget *summary_seconds_label;
+ GtkWidget *summary_position_label;
+ GtkWidget *summary_position_combo;
+ GtkWidget *summary_horizontal_offset_label;
+ GtkWidget *summary_horizontal_offset_spin;
+ GtkWidget *summary_horizontal_pixels_label;
+ GtkWidget *summary_vertical_offset_label;
+ GtkWidget *summary_vertical_offset_spin;
+ GtkWidget *summary_vertical_pixels_label;
} PropertiesDialog;
+enum {
+ POSITION_COLUMN_NICK,
+ POSITION_COLUMN_LABEL,
+ POSITION_N_COLUMNS
+};
+
/*** variables ***************************************************************/
static PropertiesDialog properties = { NULL };
/*** functions ***************************************************************/
+static void mn_properties_add_position (GtkListStore *store,
+ MNPosition position,
+ const char *label);
+
static void mn_properties_update_selected_label (void);
static void mn_properties_update_sensitivity (void);
static void mn_properties_selection_changed_h (GtkTreeSelection *selection,
gpointer user_data);
-static void mn_properties_mailboxes_list_changed_h (MNMailboxes *mailboxes,
- gpointer user_data);
-
-static void mn_properties_weak_notify_cb (gpointer data,
- GObject *former_properties);
/*** implementation **********************************************************/
@@ -74,6 +95,8 @@ mn_properties_display (void)
{
GtkSizeGroup *size_group;
GtkTreeSelection *selection;
+ GtkListStore *position_store;
+ GtkCellRenderer *renderer;
g_return_if_fail(mn_shell != NULL);
@@ -85,60 +108,126 @@ mn_properties_display (void)
mn_create_interface("properties",
"dialog", &properties.dialog,
+ "notebook", &properties.notebook,
+ "autostart_check", &properties.autostart_check,
+ "blink_check", &properties.blink_check,
+ "command_new_mail_check", &properties.command_new_mail_check,
+ "command_new_mail_entry", &properties.command_new_mail_entry,
"delay_label", &properties.delay_label,
"minutes_spin", &properties.minutes_spin,
"seconds_spin", &properties.seconds_spin,
- "autostart_check", &properties.autostart_check,
- "blink_check", &properties.blink_check,
"scrolled", &properties.scrolled,
"selected_label", &properties.selected_label,
"remove", &properties.remove,
"properties", &properties.properties,
- "command_new_mail_check", &properties.command_new_mail_check,
- "command_new_mail_entry", &properties.command_new_mail_entry,
- "command_double_clicked_check", &properties.command_double_clicked_check,
- "command_double_clicked_entry", &properties.command_double_clicked_entry,
+ "summary_enable_check", &properties.summary_enable_check,
+ "summary_autoclose_check", &properties.summary_autoclose_check,
+ "summary_minutes_spin", &properties.summary_minutes_spin,
+ "summary_minutes_label", &properties.summary_minutes_label,
+ "summary_seconds_spin", &properties.summary_seconds_spin,
+ "summary_seconds_label", &properties.summary_seconds_label,
+ "summary_position_label", &properties.summary_position_label,
+ "summary_position_combo", &properties.summary_position_combo,
+ "summary_horizontal_offset_label", &properties.summary_horizontal_offset_label,
+ "summary_horizontal_offset_spin", &properties.summary_horizontal_offset_spin,
+ "summary_horizontal_pixels_label", &properties.summary_horizontal_pixels_label,
+ "summary_vertical_offset_label", &properties.summary_vertical_offset_label,
+ "summary_vertical_offset_spin", &properties.summary_vertical_offset_spin,
+ "summary_vertical_pixels_label", &properties.summary_vertical_pixels_label,
NULL);
- g_object_add_weak_pointer(G_OBJECT(properties.dialog), (gpointer *) &properties.dialog);
+ eel_add_weak_pointer(&properties.dialog);
properties.list = mn_mailbox_view_new();
gtk_container_add(GTK_CONTAINER(properties.scrolled), properties.list);
gtk_widget_show(properties.list);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(properties.list));
- g_signal_connect(G_OBJECT(selection), "changed", G_CALLBACK(mn_properties_selection_changed_h), NULL);
+ g_signal_connect(selection, "changed", G_CALLBACK(mn_properties_selection_changed_h), NULL);
mn_setup_dnd(properties.scrolled);
size_group = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
- gtk_size_group_add_widget(size_group, properties.delay_label);
- gtk_size_group_add_widget(size_group, properties.command_new_mail_check);
- gtk_size_group_add_widget(size_group, properties.command_double_clicked_check);
+ gtk_size_group_add_widget(size_group, properties.summary_autoclose_check);
+ gtk_size_group_add_widget(size_group, properties.summary_position_label);
+ gtk_size_group_add_widget(size_group, properties.summary_horizontal_offset_label);
+ gtk_size_group_add_widget(size_group, properties.summary_vertical_offset_label);
g_object_unref(size_group);
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(properties.autostart_check), mn_conf_get_autostart());
+ position_store = gtk_list_store_new(POSITION_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING);
+
+ mn_properties_add_position(position_store, MN_POSITION_TOP_LEFT, _("top left"));
+ mn_properties_add_position(position_store, MN_POSITION_TOP_RIGHT, _("top right"));
+ mn_properties_add_position(position_store, MN_POSITION_BOTTOM_LEFT, _("bottom left"));
+ mn_properties_add_position(position_store, MN_POSITION_BOTTOM_RIGHT, _("bottom right"));
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(properties.summary_position_combo), renderer, TRUE);
+ gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(properties.summary_position_combo), renderer,
+ "text", POSITION_COLUMN_LABEL,
+ NULL);
+
+ gtk_combo_box_set_model(GTK_COMBO_BOX(properties.summary_position_combo), GTK_TREE_MODEL(position_store));
+ g_object_unref(position_store);
+
mn_conf_link(properties.dialog, MN_CONF_PROPERTIES_DIALOG,
properties.minutes_spin, MN_CONF_DELAY_MINUTES,
properties.seconds_spin, MN_CONF_DELAY_SECONDS,
properties.blink_check, MN_CONF_BLINK_ON_ERRORS,
+ properties.summary_enable_check, MN_CONF_MAIL_SUMMARY_POPUP_ENABLE,
+ properties.summary_autoclose_check, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE,
+ properties.summary_minutes_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES,
+ properties.summary_seconds_spin, MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS,
+ properties.summary_horizontal_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET,
+ properties.summary_vertical_offset_spin, MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET,
properties.command_new_mail_check, MN_CONF_COMMANDS_NEW_MAIL_ENABLED,
properties.command_new_mail_entry, MN_CONF_COMMANDS_NEW_MAIL_COMMAND,
- properties.command_double_clicked_check, MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED,
- properties.command_double_clicked_entry, MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND,
NULL);
+ mn_conf_link_combo_box_to_string(GTK_COMBO_BOX(properties.summary_position_combo),
+ POSITION_COLUMN_NICK,
+ MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
mn_properties_update_selected_label();
mn_properties_update_sensitivity();
- g_signal_connect(G_OBJECT(mn_shell->mailboxes), "list-changed", G_CALLBACK(mn_properties_mailboxes_list_changed_h), NULL);
- g_object_weak_ref(G_OBJECT(properties.dialog), mn_properties_weak_notify_cb, NULL);
+ mn_g_object_connect(properties.dialog,
+ mn_shell->mailboxes,
+ "signal::notify::must-poll", mn_properties_update_sensitivity, NULL,
+ NULL);
gtk_widget_show(properties.dialog);
}
static void
+mn_properties_add_position (GtkListStore *store,
+ MNPosition position,
+ const char *label)
+{
+ GEnumClass *enum_class;
+ GEnumValue *enum_value;
+ GtkTreeIter iter;
+
+ g_return_if_fail(GTK_IS_LIST_STORE(store));
+ g_return_if_fail(label != NULL);
+
+ enum_class = g_type_class_ref(MN_TYPE_POSITION);
+ g_return_if_fail(enum_class != NULL);
+
+ enum_value = g_enum_get_value(enum_class, position);
+ g_return_if_fail(enum_value != NULL);
+
+ gtk_list_store_append(store, &iter);
+ gtk_list_store_set(store, &iter,
+ POSITION_COLUMN_NICK, enum_value->value_nick,
+ POSITION_COLUMN_LABEL, label,
+ -1);
+
+ g_type_class_unref(enum_class);
+}
+
+static void
mn_properties_update_selected_label (void)
{
GtkTreeSelection *selection;
@@ -164,15 +253,19 @@ mn_properties_update_selected_label (void)
static void
mn_properties_update_sensitivity (void)
{
- gboolean has_manual;
+ gboolean command_new_mail_enabled;
+ gboolean must_poll;
GtkTreeSelection *selection;
gboolean has_selection;
- gboolean command_new_mail_enabled;
- gboolean command_double_clicked_enabled;
+ gboolean summary_enabled = FALSE;
+ gboolean summary_autoclose_enabled = FALSE;
- has_manual = mn_mailboxes_has_manual(mn_shell->mailboxes);
- gtk_widget_set_sensitive(properties.minutes_spin, has_manual);
- gtk_widget_set_sensitive(properties.seconds_spin, has_manual);
+ command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_new_mail_check));
+ gtk_widget_set_sensitive(properties.command_new_mail_entry, command_new_mail_enabled);
+
+ must_poll = mn_mailboxes_get_must_poll(mn_shell->mailboxes);
+ gtk_widget_set_sensitive(properties.minutes_spin, must_poll);
+ gtk_widget_set_sensitive(properties.seconds_spin, must_poll);
selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(properties.list));
has_selection = gtk_tree_selection_count_selected_rows(selection) > 0;
@@ -180,11 +273,22 @@ mn_properties_update_sensitivity (void)
gtk_widget_set_sensitive(properties.remove, has_selection);
gtk_widget_set_sensitive(properties.properties, has_selection);
- command_new_mail_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_new_mail_check));
- command_double_clicked_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.command_double_clicked_check));
-
- gtk_widget_set_sensitive(properties.command_new_mail_entry, command_new_mail_enabled);
- gtk_widget_set_sensitive(properties.command_double_clicked_entry, command_double_clicked_enabled);
+ summary_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.summary_enable_check));
+ summary_autoclose_enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(properties.summary_autoclose_check));
+
+ gtk_widget_set_sensitive(properties.summary_autoclose_check, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_minutes_spin, summary_enabled && summary_autoclose_enabled);
+ gtk_widget_set_sensitive(properties.summary_minutes_label, summary_enabled && summary_autoclose_enabled);
+ gtk_widget_set_sensitive(properties.summary_seconds_spin, summary_enabled && summary_autoclose_enabled);
+ gtk_widget_set_sensitive(properties.summary_seconds_label, summary_enabled && summary_autoclose_enabled);
+ gtk_widget_set_sensitive(properties.summary_position_label, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_position_combo, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_horizontal_offset_label, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_horizontal_offset_spin, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_horizontal_pixels_label, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_vertical_offset_label, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_vertical_offset_spin, summary_enabled);
+ gtk_widget_set_sensitive(properties.summary_vertical_pixels_label, summary_enabled);
}
static void
@@ -195,19 +299,6 @@ mn_properties_selection_changed_h (GtkTreeSelection *selection,
mn_properties_update_sensitivity();
}
-static void
-mn_properties_mailboxes_list_changed_h (MNMailboxes *mailboxes,
- gpointer user_data)
-{
- mn_properties_update_sensitivity();
-}
-
-static void
-mn_properties_weak_notify_cb (gpointer data, GObject *former_properties)
-{
- g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, mn_properties_mailboxes_list_changed_h, NULL);
-}
-
/* libglade callbacks */
void
@@ -263,9 +354,17 @@ mn_properties_response_h (GtkDialog *dialog, int response, gpointer user_data)
switch (response)
{
case GTK_RESPONSE_HELP:
- mn_display_help("properties");
- break;
-
+ {
+ int current_page;
+ const char *sections[] = { "properties-general", "properties-mailboxes", "properties-mail-summary-popup" };
+
+ current_page = gtk_notebook_get_current_page(GTK_NOTEBOOK(properties.notebook));
+ g_return_if_fail(current_page >= 0 && current_page < G_N_ELEMENTS(sections));
+
+ mn_display_help(GTK_WINDOW(dialog), sections[current_page]);
+ break;
+ }
+
case GTK_RESPONSE_CLOSE:
gtk_widget_destroy(properties.dialog);
break;
diff --git a/src/mn-sgml-entities.h b/src/mn-sgml-entities.h
@@ -0,0 +1,277 @@
+/*
+ * mn-sgml-entities.h - SGML entities table
+ *
+ * Generated automatically by ent2h.sh.
+ * Do not edit this file directly.
+ */
+
+#ifndef _MN_SGML_ENTITIES_H
+#define _MN_SGML_ENTITIES_H
+
+static const struct
+{
+ const char *name;
+ unsigned long character;
+} entities[] = {
+
+ /* xhtml-lat1.ent */
+ { "nbsp", 160 },
+ { "iexcl", 161 },
+ { "cent", 162 },
+ { "pound", 163 },
+ { "curren", 164 },
+ { "yen", 165 },
+ { "brvbar", 166 },
+ { "sect", 167 },
+ { "uml", 168 },
+ { "copy", 169 },
+ { "ordf", 170 },
+ { "laquo", 171 },
+ { "not", 172 },
+ { "shy", 173 },
+ { "reg", 174 },
+ { "macr", 175 },
+ { "deg", 176 },
+ { "plusmn", 177 },
+ { "sup", 178 },
+ { "sup", 179 },
+ { "acute", 180 },
+ { "micro", 181 },
+ { "para", 182 },
+ { "middot", 183 },
+ { "cedil", 184 },
+ { "sup", 185 },
+ { "ordm", 186 },
+ { "raquo", 187 },
+ { "frac", 188 },
+ { "frac", 189 },
+ { "frac", 190 },
+ { "iquest", 191 },
+ { "Agrave", 192 },
+ { "Aacute", 193 },
+ { "Acirc", 194 },
+ { "Atilde", 195 },
+ { "Auml", 196 },
+ { "Aring", 197 },
+ { "AElig", 198 },
+ { "Ccedil", 199 },
+ { "Egrave", 200 },
+ { "Eacute", 201 },
+ { "Ecirc", 202 },
+ { "Euml", 203 },
+ { "Igrave", 204 },
+ { "Iacute", 205 },
+ { "Icirc", 206 },
+ { "Iuml", 207 },
+ { "ETH", 208 },
+ { "Ntilde", 209 },
+ { "Ograve", 210 },
+ { "Oacute", 211 },
+ { "Ocirc", 212 },
+ { "Otilde", 213 },
+ { "Ouml", 214 },
+ { "times", 215 },
+ { "Oslash", 216 },
+ { "Ugrave", 217 },
+ { "Uacute", 218 },
+ { "Ucirc", 219 },
+ { "Uuml", 220 },
+ { "Yacute", 221 },
+ { "THORN", 222 },
+ { "szlig", 223 },
+ { "agrave", 224 },
+ { "aacute", 225 },
+ { "acirc", 226 },
+ { "atilde", 227 },
+ { "auml", 228 },
+ { "aring", 229 },
+ { "aelig", 230 },
+ { "ccedil", 231 },
+ { "egrave", 232 },
+ { "eacute", 233 },
+ { "ecirc", 234 },
+ { "euml", 235 },
+ { "igrave", 236 },
+ { "iacute", 237 },
+ { "icirc", 238 },
+ { "iuml", 239 },
+ { "eth", 240 },
+ { "ntilde", 241 },
+ { "ograve", 242 },
+ { "oacute", 243 },
+ { "ocirc", 244 },
+ { "otilde", 245 },
+ { "ouml", 246 },
+ { "divide", 247 },
+ { "oslash", 248 },
+ { "ugrave", 249 },
+ { "uacute", 250 },
+ { "ucirc", 251 },
+ { "uuml", 252 },
+ { "yacute", 253 },
+ { "thorn", 254 },
+ { "yuml", 255 },
+
+ /* xhtml-special.ent */
+ { "quot", 34 },
+ { "amp", 38 },
+ { "lt", 60 },
+ { "gt", 62 },
+ { "apos", 39 },
+ { "OElig", 338 },
+ { "oelig", 339 },
+ { "Scaron", 352 },
+ { "scaron", 353 },
+ { "Yuml", 376 },
+ { "circ", 710 },
+ { "tilde", 732 },
+ { "ensp", 8194 },
+ { "emsp", 8195 },
+ { "thinsp", 8201 },
+ { "zwnj", 8204 },
+ { "zwj", 8205 },
+ { "lrm", 8206 },
+ { "rlm", 8207 },
+ { "ndash", 8211 },
+ { "mdash", 8212 },
+ { "lsquo", 8216 },
+ { "rsquo", 8217 },
+ { "sbquo", 8218 },
+ { "ldquo", 8220 },
+ { "rdquo", 8221 },
+ { "bdquo", 8222 },
+ { "dagger", 8224 },
+ { "Dagger", 8225 },
+ { "permil", 8240 },
+ { "lsaquo", 8249 },
+ { "rsaquo", 8250 },
+ { "euro", 8364 },
+
+ /* xhtml-symbol.ent */
+ { "fnof", 402 },
+ { "Alpha", 913 },
+ { "Beta", 914 },
+ { "Gamma", 915 },
+ { "Delta", 916 },
+ { "Epsilon", 917 },
+ { "Zeta", 918 },
+ { "Eta", 919 },
+ { "Theta", 920 },
+ { "Iota", 921 },
+ { "Kappa", 922 },
+ { "Lambda", 923 },
+ { "Mu", 924 },
+ { "Nu", 925 },
+ { "Xi", 926 },
+ { "Omicron", 927 },
+ { "Pi", 928 },
+ { "Rho", 929 },
+ { "Sigma", 931 },
+ { "Tau", 932 },
+ { "Upsilon", 933 },
+ { "Phi", 934 },
+ { "Chi", 935 },
+ { "Psi", 936 },
+ { "Omega", 937 },
+ { "alpha", 945 },
+ { "beta", 946 },
+ { "gamma", 947 },
+ { "delta", 948 },
+ { "epsilon", 949 },
+ { "zeta", 950 },
+ { "eta", 951 },
+ { "theta", 952 },
+ { "iota", 953 },
+ { "kappa", 954 },
+ { "lambda", 955 },
+ { "mu", 956 },
+ { "nu", 957 },
+ { "xi", 958 },
+ { "omicron", 959 },
+ { "pi", 960 },
+ { "rho", 961 },
+ { "sigmaf", 962 },
+ { "sigma", 963 },
+ { "tau", 964 },
+ { "upsilon", 965 },
+ { "phi", 966 },
+ { "chi", 967 },
+ { "psi", 968 },
+ { "omega", 969 },
+ { "thetasym", 977 },
+ { "upsih", 978 },
+ { "piv", 982 },
+ { "bull", 8226 },
+ { "hellip", 8230 },
+ { "prime", 8242 },
+ { "Prime", 8243 },
+ { "oline", 8254 },
+ { "frasl", 8260 },
+ { "weierp", 8472 },
+ { "image", 8465 },
+ { "real", 8476 },
+ { "trade", 8482 },
+ { "alefsym", 8501 },
+ { "larr", 8592 },
+ { "uarr", 8593 },
+ { "rarr", 8594 },
+ { "darr", 8595 },
+ { "harr", 8596 },
+ { "crarr", 8629 },
+ { "lArr", 8656 },
+ { "uArr", 8657 },
+ { "rArr", 8658 },
+ { "dArr", 8659 },
+ { "hArr", 8660 },
+ { "forall", 8704 },
+ { "part", 8706 },
+ { "exist", 8707 },
+ { "empty", 8709 },
+ { "nabla", 8711 },
+ { "isin", 8712 },
+ { "notin", 8713 },
+ { "ni", 8715 },
+ { "prod", 8719 },
+ { "sum", 8721 },
+ { "minus", 8722 },
+ { "lowast", 8727 },
+ { "radic", 8730 },
+ { "prop", 8733 },
+ { "infin", 8734 },
+ { "ang", 8736 },
+ { "and", 8743 },
+ { "or", 8744 },
+ { "cap", 8745 },
+ { "cup", 8746 },
+ { "int", 8747 },
+ { "there", 8756 },
+ { "sim", 8764 },
+ { "cong", 8773 },
+ { "asymp", 8776 },
+ { "ne", 8800 },
+ { "equiv", 8801 },
+ { "le", 8804 },
+ { "ge", 8805 },
+ { "sub", 8834 },
+ { "sup", 8835 },
+ { "nsub", 8836 },
+ { "sube", 8838 },
+ { "supe", 8839 },
+ { "oplus", 8853 },
+ { "otimes", 8855 },
+ { "perp", 8869 },
+ { "sdot", 8901 },
+ { "lceil", 8968 },
+ { "rceil", 8969 },
+ { "lfloor", 8970 },
+ { "rfloor", 8971 },
+ { "lang", 9001 },
+ { "rang", 9002 },
+ { "loz", 9674 },
+ { "spades", 9824 },
+ { "clubs", 9827 },
+ { "hearts", 9829 },
+ { "diams", 9830 },
+};
+
+#endif /* _MN_SGML_ENTITIES_H */
diff --git a/src/mn-sgml-ref.c b/src/mn-sgml-ref.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <limits.h>
+#include <glib.h>
+#include "mn-sgml-entities.h"
+
+/*** functions ***************************************************************/
+
+static gunichar mn_sgml_ref_get_unichar (const char *ref);
+
+/*** implementation **********************************************************/
+
+static gunichar
+mn_sgml_ref_get_unichar (const char *ref)
+{
+ gunichar c = 0; /* 0 means "invalid reference" */
+
+ g_return_val_if_fail(ref != NULL, 0);
+
+ if (*ref == '#')
+ { /* numeric reference */
+ const char *nptr;
+ int base;
+
+ if (*(ref + 1) == 'x' || *(ref + 1) == 'X')
+ { /* hexadecimal number */
+ nptr = ref + 2;
+ base = 16;
+ }
+ else
+ { /* decimal number */
+ nptr = ref + 1;
+ base = 10;
+ }
+
+ if (*nptr)
+ {
+ char *end;
+ unsigned long code;
+
+ code = strtoul(nptr, &end, base);
+ if (*end == 0) /* could convert */
+ c = code;
+ }
+ }
+ else
+ { /* entity reference */
+ int i;
+
+ for (i = 0; i < G_N_ELEMENTS(entities); i++)
+ if (! strcmp(ref, entities[i].name))
+ {
+ c = entities[i].character;
+ break;
+ }
+ }
+
+ return c;
+}
+
+/**
+ * mn_sgml_ref_expand:
+ * @string: a string to expand
+ *
+ * Parses @str, expanding every SGML character reference to its
+ * Unicode character.
+ *
+ * Return value: a newly-allocated UTF-8 string.
+ **/
+char *
+mn_sgml_ref_expand (const char *str)
+{
+ GString *unescaped;
+ char *ampersand;
+ char *start;
+
+ g_return_val_if_fail(str != NULL, NULL);
+
+ unescaped = g_string_new(NULL);
+ start = (char *) str;
+
+ while ((ampersand = strchr(start, '&')))
+ {
+ char *semicolon = strchr(ampersand, ';');
+
+ if (semicolon)
+ {
+ char *ref;
+ gunichar c;
+
+ ref = g_strndup(ampersand + 1, semicolon - ampersand - 1);
+ c = mn_sgml_ref_get_unichar(ref);
+ g_free(ref);
+
+ g_string_append_len(unescaped, start, ampersand - start);
+ if (c)
+ g_string_append_unichar(unescaped, c);
+ else /* invalid reference, append it raw */
+ g_string_append_len(unescaped, ampersand, semicolon - ampersand + 1);
+
+ start = semicolon + 1;
+ }
+ else
+ break;
+ }
+
+ g_string_append(unescaped, start);
+
+ return g_string_free(unescaped, FALSE);
+}
diff --git a/src/mn-sgml-ref.h b/src/mn-sgml-ref.h
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_SGML_REF_H
+#define _MN_SGML_REF_H
+
+char *mn_sgml_ref_expand (const char *str);
+
+#endif /* _MN_SGML_REF_H */
diff --git a/src/mn-shell-private.h b/src/mn-shell-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_SHELL_PRIVATE_H__
#define __MN_SHELL_PRIVATE_H__
@@ -10,15 +10,15 @@ extern "C" {
#endif /* __cplusplus */
-#line 22 "mn-shell.gob"
+#line 24 "mn-shell.gob"
#include "mn-mail-icon.h"
#line 18 "mn-shell-private.h"
struct _MNShellPrivate {
-#line 42 "mn-shell.gob"
+#line 47 "mn-shell.gob"
MNMailIcon * icon;
-#line 43 "mn-shell.gob"
+#line 48 "mn-shell.gob"
GtkWidget * about;
#line 24 "mn-shell-private.h"
};
diff --git a/src/mn-shell.c b/src/mn-shell.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:54 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-shell.h"
#include "mn-shell-private.h"
@@ -21,21 +23,24 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 25 "mn-shell.gob"
+#line 27 "mn-shell.gob"
#include "config.h"
#include <errno.h>
#include <gnome.h>
+#include <eel/eel.h>
#include "mn-properties.h"
#include "mn-util.h"
#include "mn-conf.h"
#include "mn-mailboxes.h"
#include "mn-unsupported-mailbox.h"
#include "mn-about-dialog.h"
+#include "mn-summary-popup.h"
+#include "mn-summary-dialog.h"
MNShell *mn_shell = NULL;
-#line 39 "mn-shell.c"
+#line 44 "mn-shell.c"
/* self casting macros */
#define SELF(x) MN_SHELL(x)
#define SELF_CONST(x) MN_SHELL_CONST(x)
@@ -53,21 +58,17 @@ typedef MNShellClass SelfClass;
static void mn_shell_class_init (MNShellClass * c) G_GNUC_UNUSED;
static void mn_shell_init (MNShell * self) G_GNUC_UNUSED;
static void ___2_mn_shell_finalize (GObject * object) G_GNUC_UNUSED;
-static void mn_shell_mailboxes_list_changed_h (MNMailboxes * mailboxes, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_mailboxes_status_changed_h (MNMailboxes * mailboxes, gpointer user_data) G_GNUC_UNUSED;
+static void mn_shell_mailboxes_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_init_icon (MNShell * self) G_GNUC_UNUSED;
-static void mn_shell_notify_double_clicked_command_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_icon_activate_run_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
+static void mn_shell_icon_activate_summary_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data) G_GNUC_UNUSED;
static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data) G_GNUC_UNUSED;
-static void mn_shell_run_double_clicked_command (MNShell * self) G_GNUC_UNUSED;
-static void mn_shell_update_command (MNShell * self) G_GNUC_UNUSED;
static void mn_shell_update_sensitivity (MNShell * self) G_GNUC_UNUSED;
static void mn_shell_update_icon (MNShell * self) G_GNUC_UNUSED;
@@ -75,21 +76,17 @@ static void mn_shell_update_icon (MNShell * self) G_GNUC_UNUSED;
static GObjectClass *parent_class = NULL;
/* Short form macros */
-#define self_mailboxes_list_changed_h mn_shell_mailboxes_list_changed_h
-#define self_mailboxes_status_changed_h mn_shell_mailboxes_status_changed_h
+#define self_mailboxes_messages_changed_h mn_shell_mailboxes_messages_changed_h
#define self_init_icon mn_shell_init_icon
-#define self_notify_double_clicked_command_cb mn_shell_notify_double_clicked_command_cb
#define self_notify_blink_on_errors_cb mn_shell_notify_blink_on_errors_cb
#define self_icon_activate_h mn_shell_icon_activate_h
-#define self_icon_activate_run_h mn_shell_icon_activate_run_h
+#define self_icon_activate_summary_h mn_shell_icon_activate_summary_h
#define self_icon_activate_update_h mn_shell_icon_activate_update_h
#define self_icon_activate_properties_h mn_shell_icon_activate_properties_h
#define self_icon_activate_help_h mn_shell_icon_activate_help_h
#define self_icon_activate_about_h mn_shell_icon_activate_about_h
#define self_icon_activate_remove_h mn_shell_icon_activate_remove_h
#define self_icon_destroy_h mn_shell_icon_destroy_h
-#define self_run_double_clicked_command mn_shell_run_double_clicked_command
-#define self_update_command mn_shell_update_command
#define self_update_sensitivity mn_shell_update_sensitivity
#define self_update_icon mn_shell_update_icon
#define self_new mn_shell_new
@@ -146,9 +143,9 @@ ___dispose (GObject *obj_self)
MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 41 "mn-shell.gob"
- if(self->mailboxes) { ((*(void (*)(void *))g_object_unref)) (self->mailboxes); self->mailboxes = NULL; }
-#line 152 "mn-shell.c"
+#line 46 "mn-shell.gob"
+ if(self->mailboxes) { g_object_unref ((gpointer) self->mailboxes); self->mailboxes = NULL; }
+#line 149 "mn-shell.c"
}
#undef __GOB_FUNCTION__
@@ -157,12 +154,11 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Shell::finalize"
- MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
- gpointer priv = self->_priv;
-#line 58 "mn-shell.gob"
+ MNShell *self G_GNUC_UNUSED = MN_SHELL (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
+#line 70 "mn-shell.gob"
___2_mn_shell_finalize(obj_self);
-#line 165 "mn-shell.c"
- g_free (priv);
+#line 162 "mn-shell.c"
}
#undef __GOB_FUNCTION__
@@ -172,174 +168,158 @@ mn_shell_class_init (MNShellClass * c G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:Shell::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ g_type_class_add_private(c,sizeof(MNShellPrivate));
+
parent_class = g_type_class_ref (G_TYPE_OBJECT);
-#line 58 "mn-shell.gob"
+#line 70 "mn-shell.gob"
g_object_class->finalize = ___finalize;
-#line 180 "mn-shell.c"
+#line 178 "mn-shell.c"
g_object_class->dispose = ___dispose;
}
#undef __GOB_FUNCTION__
-#line 45 "mn-shell.gob"
+#line 50 "mn-shell.gob"
static void
mn_shell_init (MNShell * self G_GNUC_UNUSED)
-#line 187 "mn-shell.c"
+#line 185 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::init"
- self->_priv = g_new0 (MNShellPrivate, 1);
-#line 41 "mn-shell.gob"
+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNShellPrivate);
+#line 46 "mn-shell.gob"
self->mailboxes = mn_mailboxes_new();
-#line 193 "mn-shell.c"
+#line 191 "mn-shell.c"
{
-#line 46 "mn-shell.gob"
+#line 51 "mn-shell.gob"
g_return_if_fail(mn_shell == NULL);
- g_object_add_weak_pointer(G_OBJECT(self), (gpointer *) &mn_shell);
+ mn_shell = self;
+ eel_add_weak_pointer(&mn_shell);
self_init_icon(self);
- eel_gconf_notification_add(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND, self_notify_double_clicked_command_cb, self);
eel_gconf_notification_add(MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self);
- g_signal_connect(G_OBJECT(self->mailboxes), "list-changed", G_CALLBACK(self_mailboxes_list_changed_h), self);
- g_signal_connect(G_OBJECT(self->mailboxes), "status-changed", G_CALLBACK(self_mailboxes_status_changed_h), self);
+ g_object_connect(self->mailboxes,
+ "signal::messages-changed", self_mailboxes_messages_changed_h, self,
+ "swapped-signal::notify::must-poll", self_update_sensitivity, self,
+ "swapped-signal::list-changed", self_update_icon, self,
+ "swapped-signal::has-new-changed", self_update_icon, self,
+ "swapped-signal::error-changed", self_update_icon, self,
+ NULL);
+
+ mn_summary_popup_init();
-#line 207 "mn-shell.c"
+#line 212 "mn-shell.c"
}
}
#undef __GOB_FUNCTION__
-#line 58 "mn-shell.gob"
+#line 70 "mn-shell.gob"
static void
___2_mn_shell_finalize (GObject * object G_GNUC_UNUSED)
-#line 217 "mn-shell.c"
+#line 222 "mn-shell.c"
#define PARENT_HANDLER(___object) \
{ if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(___object); }
{
#define __GOB_FUNCTION__ "MN:Shell::finalize"
{
-#line 60 "mn-shell.gob"
+#line 72 "mn-shell.gob"
gtk_main_quit();
PARENT_HANDLER(object);
}}
-#line 229 "mn-shell.c"
+#line 234 "mn-shell.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 65 "mn-shell.gob"
+#line 77 "mn-shell.gob"
static void
-mn_shell_mailboxes_list_changed_h (MNMailboxes * mailboxes, gpointer user_data)
-#line 236 "mn-shell.c"
+mn_shell_mailboxes_messages_changed_h (MNMailboxes * mailboxes, gboolean has_new, gpointer user_data)
+#line 241 "mn-shell.c"
{
-#define __GOB_FUNCTION__ "MN:Shell::mailboxes_list_changed_h"
-#line 65 "mn-shell.gob"
+#define __GOB_FUNCTION__ "MN:Shell::mailboxes_messages_changed_h"
+#line 77 "mn-shell.gob"
g_return_if_fail (mailboxes != NULL);
-#line 65 "mn-shell.gob"
+#line 77 "mn-shell.gob"
g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
-#line 65 "mn-shell.gob"
+#line 77 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 245 "mn-shell.c"
+#line 250 "mn-shell.c"
{
-#line 68 "mn-shell.gob"
+#line 81 "mn-shell.gob"
- Self *self = user_data;
-
- self_update_sensitivity(self);
- self_update_icon(self);
- }}
-#line 254 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 75 "mn-shell.gob"
-static void
-mn_shell_mailboxes_status_changed_h (MNMailboxes * mailboxes, gpointer user_data)
-#line 260 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::mailboxes_status_changed_h"
-#line 75 "mn-shell.gob"
- g_return_if_fail (mailboxes != NULL);
-#line 75 "mn-shell.gob"
- g_return_if_fail (MN_IS_MAILBOXES (mailboxes));
-#line 75 "mn-shell.gob"
- g_return_if_fail (user_data != NULL);
-#line 269 "mn-shell.c"
-{
-#line 78 "mn-shell.gob"
-
- Self *self = user_data;
-
- self_update_icon(self);
+ if (has_new)
+ {
+ gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
+ if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
+ {
+ char *command;
+
+ command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+ if (command)
+ {
+ if (gnome_execute_shell(NULL, command) < 0)
+ mn_error_dialog(NULL,
+ NULL,
+ NULL,
+ _("A command error has occurred in Mail Notification"),
+ _("Unable to execute new mail command: %s."),
+ g_strerror(errno));
+
+ g_free(command);
+ }
+ }
+ }
}}
#line 277 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 84 "mn-shell.gob"
+#line 106 "mn-shell.gob"
static void
mn_shell_init_icon (MNShell * self)
#line 283 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::init_icon"
-#line 84 "mn-shell.gob"
+#line 106 "mn-shell.gob"
g_return_if_fail (self != NULL);
-#line 84 "mn-shell.gob"
+#line 106 "mn-shell.gob"
g_return_if_fail (MN_IS_SHELL (self));
#line 290 "mn-shell.c"
{
-#line 86 "mn-shell.gob"
+#line 108 "mn-shell.gob"
selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
- g_signal_connect(G_OBJECT(selfp->icon), "activate", G_CALLBACK(self_icon_activate_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-run", G_CALLBACK(self_icon_activate_run_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-update", G_CALLBACK(self_icon_activate_update_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-properties", G_CALLBACK(self_icon_activate_properties_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-help", G_CALLBACK(self_icon_activate_help_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-about", G_CALLBACK(self_icon_activate_about_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-remove", G_CALLBACK(self_icon_activate_remove_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "destroy", G_CALLBACK(self_icon_destroy_h), self);
-
- self_update_command(self);
+ g_object_connect(selfp->icon,
+ "signal::activate", self_icon_activate_h, self,
+ "signal::activate-summary", self_icon_activate_summary_h, self,
+ "signal::activate-update", self_icon_activate_update_h, self,
+ "signal::activate-properties", self_icon_activate_properties_h, self,
+ "signal::activate-help", self_icon_activate_help_h, self,
+ "signal::activate-about", self_icon_activate_about_h, self,
+ "signal::activate-remove", self_icon_activate_remove_h, self,
+ "signal::destroy", self_icon_destroy_h, self,
+ NULL);
+
self_update_sensitivity(self);
self_update_icon(self);
}}
-#line 309 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 103 "mn-shell.gob"
-static void
-mn_shell_notify_double_clicked_command_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 315 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::notify_double_clicked_command_cb"
-#line 103 "mn-shell.gob"
- g_return_if_fail (user_data != NULL);
-#line 320 "mn-shell.c"
-{
-#line 108 "mn-shell.gob"
-
- Self *self = user_data;
-
- GDK_THREADS_ENTER();
- self_update_command(self);
- GDK_THREADS_LEAVE();
- }}
-#line 330 "mn-shell.c"
+#line 310 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 116 "mn-shell.gob"
+#line 126 "mn-shell.gob"
static void
mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEntry * entry, gpointer user_data)
-#line 336 "mn-shell.c"
+#line 316 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::notify_blink_on_errors_cb"
-#line 116 "mn-shell.gob"
+#line 126 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 341 "mn-shell.c"
+#line 321 "mn-shell.c"
{
-#line 121 "mn-shell.gob"
+#line 131 "mn-shell.gob"
Self *self = user_data;
@@ -347,272 +327,215 @@ mn_shell_notify_blink_on_errors_cb (GConfClient * client, guint cnxn_id, GConfEn
self_update_icon(self);
GDK_THREADS_LEAVE();
}}
-#line 351 "mn-shell.c"
+#line 331 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
static void
mn_shell_icon_activate_h (MNMailIcon * icon, gpointer user_data)
-#line 357 "mn-shell.c"
+#line 337 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_activate_h"
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 129 "mn-shell.gob"
+#line 139 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 366 "mn-shell.c"
+#line 346 "mn-shell.c"
{
-#line 132 "mn-shell.gob"
+#line 142 "mn-shell.gob"
- Self *self = user_data;
- if (eel_gconf_get_boolean(MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED))
- self_run_double_clicked_command(self);
+ mn_summary_dialog_display();
}}
-#line 374 "mn-shell.c"
+#line 352 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 138 "mn-shell.gob"
+#line 146 "mn-shell.gob"
static void
-mn_shell_icon_activate_run_h (MNMailIcon * icon, gpointer user_data)
-#line 380 "mn-shell.c"
+mn_shell_icon_activate_summary_h (MNMailIcon * icon, gpointer user_data)
+#line 358 "mn-shell.c"
{
-#define __GOB_FUNCTION__ "MN:Shell::icon_activate_run_h"
-#line 138 "mn-shell.gob"
+#define __GOB_FUNCTION__ "MN:Shell::icon_activate_summary_h"
+#line 146 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 138 "mn-shell.gob"
+#line 146 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 138 "mn-shell.gob"
+#line 146 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 389 "mn-shell.c"
+#line 367 "mn-shell.c"
{
-#line 141 "mn-shell.gob"
+#line 149 "mn-shell.gob"
- Self *self = user_data;
- self_run_double_clicked_command(self);
+ mn_summary_dialog_display();
}}
-#line 396 "mn-shell.c"
+#line 373 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
static void
mn_shell_icon_activate_update_h (MNMailIcon * icon, gpointer user_data)
-#line 402 "mn-shell.c"
+#line 379 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_activate_update_h"
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 146 "mn-shell.gob"
+#line 153 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 411 "mn-shell.c"
+#line 388 "mn-shell.c"
{
-#line 149 "mn-shell.gob"
+#line 156 "mn-shell.gob"
Self *self = user_data;
mn_mailboxes_check(self->mailboxes);
}}
-#line 418 "mn-shell.c"
+#line 395 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
static void
mn_shell_icon_activate_properties_h (MNMailIcon * icon, gpointer user_data)
-#line 424 "mn-shell.c"
+#line 401 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_activate_properties_h"
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 154 "mn-shell.gob"
+#line 161 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 433 "mn-shell.c"
+#line 410 "mn-shell.c"
{
-#line 157 "mn-shell.gob"
+#line 164 "mn-shell.gob"
mn_properties_display();
}}
-#line 439 "mn-shell.c"
+#line 416 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
static void
mn_shell_icon_activate_help_h (MNMailIcon * icon, gpointer user_data)
-#line 445 "mn-shell.c"
+#line 422 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_activate_help_h"
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 161 "mn-shell.gob"
+#line 168 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 454 "mn-shell.c"
+#line 431 "mn-shell.c"
{
-#line 164 "mn-shell.gob"
+#line 171 "mn-shell.gob"
- mn_display_help(NULL);
+ mn_display_help(NULL, NULL);
}}
-#line 460 "mn-shell.c"
+#line 437 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
static void
mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data)
-#line 466 "mn-shell.c"
+#line 443 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_activate_about_h"
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 168 "mn-shell.gob"
+#line 175 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 475 "mn-shell.c"
+#line 452 "mn-shell.c"
{
-#line 171 "mn-shell.gob"
+#line 178 "mn-shell.gob"
Self *self = user_data;
self_display_about(self);
}}
-#line 482 "mn-shell.c"
+#line 459 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
static void
mn_shell_icon_activate_remove_h (MNMailIcon * icon, gpointer user_data)
-#line 488 "mn-shell.c"
+#line 465 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_activate_remove_h"
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
g_return_if_fail (icon != NULL);
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
g_return_if_fail (MN_IS_MAIL_ICON (icon));
-#line 176 "mn-shell.gob"
+#line 183 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 497 "mn-shell.c"
+#line 474 "mn-shell.c"
{
-#line 179 "mn-shell.gob"
+#line 186 "mn-shell.gob"
Self *self = user_data;
g_object_unref(self);
}}
-#line 504 "mn-shell.c"
+#line 481 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
static void
mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data)
-#line 510 "mn-shell.c"
+#line 487 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h"
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
g_return_if_fail (object != NULL);
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
g_return_if_fail (GTK_IS_OBJECT (object));
-#line 184 "mn-shell.gob"
+#line 191 "mn-shell.gob"
g_return_if_fail (user_data != NULL);
-#line 519 "mn-shell.c"
+#line 496 "mn-shell.c"
{
-#line 187 "mn-shell.gob"
+#line 194 "mn-shell.gob"
Self *self = user_data;
/* The Notification Area applet has been terminated. Recreate the icon. */
self_init_icon(self);
}}
-#line 528 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 194 "mn-shell.gob"
-static void
-mn_shell_run_double_clicked_command (MNShell * self)
-#line 534 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::run_double_clicked_command"
-#line 194 "mn-shell.gob"
- g_return_if_fail (self != NULL);
-#line 194 "mn-shell.gob"
- g_return_if_fail (MN_IS_SHELL (self));
-#line 541 "mn-shell.c"
-{
-#line 196 "mn-shell.gob"
-
- char *command;
-
- command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
- if (command)
- {
- if (gnome_execute_shell(NULL, command) < 0)
- mn_error_dialog(NULL,
- _("A command error has occurred"),
- _("Unable to execute double-clicked command: %s."),
- g_strerror(errno));
-
- g_free(command);
- }
- }}
-#line 559 "mn-shell.c"
-#undef __GOB_FUNCTION__
-
-#line 212 "mn-shell.gob"
-static void
-mn_shell_update_command (MNShell * self)
-#line 565 "mn-shell.c"
-{
-#define __GOB_FUNCTION__ "MN:Shell::update_command"
-#line 212 "mn-shell.gob"
- g_return_if_fail (self != NULL);
-#line 212 "mn-shell.gob"
- g_return_if_fail (MN_IS_SHELL (self));
-#line 572 "mn-shell.c"
-{
-#line 214 "mn-shell.gob"
-
- char *command;
-
- command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
- mn_mail_icon_set_command(selfp->icon, command);
- g_free(command);
- }}
-#line 582 "mn-shell.c"
+#line 505 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 222 "mn-shell.gob"
+#line 201 "mn-shell.gob"
static void
mn_shell_update_sensitivity (MNShell * self)
-#line 588 "mn-shell.c"
+#line 511 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::update_sensitivity"
-#line 222 "mn-shell.gob"
+#line 201 "mn-shell.gob"
g_return_if_fail (self != NULL);
-#line 222 "mn-shell.gob"
+#line 201 "mn-shell.gob"
g_return_if_fail (MN_IS_SHELL (self));
-#line 595 "mn-shell.c"
+#line 518 "mn-shell.c"
{
-#line 224 "mn-shell.gob"
+#line 203 "mn-shell.gob"
- gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_has_manual(self->mailboxes));
+ gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
}}
-#line 601 "mn-shell.c"
+#line 524 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 228 "mn-shell.gob"
+#line 207 "mn-shell.gob"
static void
mn_shell_update_icon (MNShell * self)
-#line 607 "mn-shell.c"
+#line 530 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::update_icon"
-#line 228 "mn-shell.gob"
+#line 207 "mn-shell.gob"
g_return_if_fail (self != NULL);
-#line 228 "mn-shell.gob"
+#line 207 "mn-shell.gob"
g_return_if_fail (MN_IS_SHELL (self));
-#line 614 "mn-shell.c"
+#line 537 "mn-shell.c"
{
-#line 230 "mn-shell.gob"
+#line 209 "mn-shell.gob"
GSList *mailboxes;
gboolean show = FALSE;
@@ -623,7 +546,6 @@ mn_shell_update_icon (MNShell * self)
if (mailboxes)
{
GSList *l;
- static int old_n_new = 0;
int n_new = 0;
int n_error = 0;
int n_unsupported = 0;
@@ -700,28 +622,6 @@ mn_shell_update_icon (MNShell * self)
g_string_free(new_string, TRUE);
g_string_free(error_string, TRUE);
g_string_free(unsupported_string, TRUE);
-
- if (old_n_new == 0 && n_new > 0)
- {
- gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
- if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
- {
- char *command;
-
- command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
- if (command)
- {
- if (gnome_execute_shell(NULL, command) < 0)
- mn_error_dialog(NULL,
- _("A command error has occurred in Mail Notification"),
- _("Unable to execute new mail command: %s."),
- g_strerror(errno));
-
- g_free(command);
- }
- }
- }
- old_n_new = n_new;
}
if (show || blink)
@@ -736,36 +636,36 @@ mn_shell_update_icon (MNShell * self)
if (tooltip)
g_string_free(tooltip, TRUE);
}}
-#line 740 "mn-shell.c"
+#line 640 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 354 "mn-shell.gob"
+#line 310 "mn-shell.gob"
MNShell *
mn_shell_new (void)
-#line 746 "mn-shell.c"
+#line 646 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::new"
{
-#line 356 "mn-shell.gob"
+#line 312 "mn-shell.gob"
return MN_SHELL(GET_NEW);
}}
-#line 754 "mn-shell.c"
+#line 654 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 360 "mn-shell.gob"
+#line 316 "mn-shell.gob"
void
mn_shell_display_about (MNShell * self)
-#line 760 "mn-shell.c"
+#line 660 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::display_about"
-#line 360 "mn-shell.gob"
+#line 316 "mn-shell.gob"
g_return_if_fail (self != NULL);
-#line 360 "mn-shell.gob"
+#line 316 "mn-shell.gob"
g_return_if_fail (MN_IS_SHELL (self));
-#line 767 "mn-shell.c"
+#line 667 "mn-shell.c"
{
-#line 362 "mn-shell.gob"
+#line 318 "mn-shell.gob"
if (selfp->about)
{
@@ -774,25 +674,25 @@ mn_shell_display_about (MNShell * self)
}
selfp->about = mn_about_dialog_new();
- g_object_add_weak_pointer(G_OBJECT(selfp->about), (gpointer *) &selfp->about);
+ eel_add_weak_pointer(&selfp->about);
gtk_widget_show(GTK_WIDGET(selfp->about));
}}
-#line 781 "mn-shell.c"
+#line 681 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 374 "mn-shell.gob"
+#line 330 "mn-shell.gob"
void
mn_shell_run_welcome (MNShell * self)
-#line 787 "mn-shell.c"
+#line 687 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::run_welcome"
-#line 374 "mn-shell.gob"
+#line 330 "mn-shell.gob"
g_return_if_fail (self != NULL);
-#line 374 "mn-shell.gob"
+#line 330 "mn-shell.gob"
g_return_if_fail (MN_IS_SHELL (self));
-#line 794 "mn-shell.c"
+#line 694 "mn-shell.c"
{
-#line 376 "mn-shell.gob"
+#line 332 "mn-shell.gob"
GtkWidget *dialog;
int response;
@@ -806,24 +706,24 @@ mn_shell_run_welcome (MNShell * self)
if (response == GTK_RESPONSE_OK)
mn_properties_display();
}}
-#line 810 "mn-shell.c"
+#line 710 "mn-shell.c"
#undef __GOB_FUNCTION__
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
void
mn_shell_report (MNShell * self, char ** report)
-#line 816 "mn-shell.c"
+#line 716 "mn-shell.c"
{
#define __GOB_FUNCTION__ "MN:Shell::report"
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
g_return_if_fail (self != NULL);
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
g_return_if_fail (MN_IS_SHELL (self));
-#line 390 "mn-shell.gob"
+#line 346 "mn-shell.gob"
g_return_if_fail (report != NULL);
-#line 825 "mn-shell.c"
+#line 725 "mn-shell.c"
{
-#line 392 "mn-shell.gob"
+#line 348 "mn-shell.gob"
GString *string;
GSList *l;
@@ -849,5 +749,5 @@ mn_shell_report (MNShell * self, char ** report)
*report = string->str;
g_string_free(string, FALSE);
}}
-#line 853 "mn-shell.c"
+#line 753 "mn-shell.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-shell.gob b/src/mn-shell.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailboxes.h"
%}
@@ -26,12 +28,15 @@
#include "config.h"
#include <errno.h>
#include <gnome.h>
+#include <eel/eel.h>
#include "mn-properties.h"
#include "mn-util.h"
#include "mn-conf.h"
#include "mn-mailboxes.h"
#include "mn-unsupported-mailbox.h"
#include "mn-about-dialog.h"
+#include "mn-summary-popup.h"
+#include "mn-summary-dialog.h"
MNShell *mn_shell = NULL;
%}
@@ -45,14 +50,21 @@ class MN:Shell from G:Object
init (self)
{
g_return_if_fail(mn_shell == NULL);
- g_object_add_weak_pointer(G_OBJECT(self), (gpointer *) &mn_shell);
+ mn_shell = self;
+ eel_add_weak_pointer(&mn_shell);
self_init_icon(self);
- eel_gconf_notification_add(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND, self_notify_double_clicked_command_cb, self);
eel_gconf_notification_add(MN_CONF_BLINK_ON_ERRORS, self_notify_blink_on_errors_cb, self);
- g_signal_connect(G_OBJECT(self->mailboxes), "list-changed", G_CALLBACK(self_mailboxes_list_changed_h), self);
- g_signal_connect(G_OBJECT(self->mailboxes), "status-changed", G_CALLBACK(self_mailboxes_status_changed_h), self);
+ g_object_connect(self->mailboxes,
+ "signal::messages-changed", self_mailboxes_messages_changed_h, self,
+ "swapped-signal::notify::must-poll", self_update_sensitivity, self,
+ "swapped-signal::list-changed", self_update_icon, self,
+ "swapped-signal::has-new-changed", self_update_icon, self,
+ "swapped-signal::error-changed", self_update_icon, self,
+ NULL);
+
+ mn_summary_popup_init();
}
override (G:Object) void
@@ -63,22 +75,32 @@ class MN:Shell from G:Object
}
private void
- mailboxes_list_changed_h (MN:Mailboxes *mailboxes (check null type),
- gpointer user_data (check null))
- {
- Self *self = user_data;
-
- self_update_sensitivity(self);
- self_update_icon(self);
- }
-
- private void
- mailboxes_status_changed_h (MN:Mailboxes *mailboxes (check null type),
- gpointer user_data (check null))
+ mailboxes_messages_changed_h (MN:Mailboxes *mailboxes (check null type),
+ gboolean has_new,
+ gpointer user_data (check null))
{
- Self *self = user_data;
-
- self_update_icon(self);
+ if (has_new)
+ {
+ gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
+ if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
+ {
+ char *command;
+
+ command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
+ if (command)
+ {
+ if (gnome_execute_shell(NULL, command) < 0)
+ mn_error_dialog(NULL,
+ NULL,
+ NULL,
+ _("A command error has occurred in Mail Notification"),
+ _("Unable to execute new mail command: %s."),
+ g_strerror(errno));
+
+ g_free(command);
+ }
+ }
+ }
}
private void
@@ -86,34 +108,22 @@ class MN:Shell from G:Object
{
selfp->icon = MN_MAIL_ICON(mn_mail_icon_new());
- g_signal_connect(G_OBJECT(selfp->icon), "activate", G_CALLBACK(self_icon_activate_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-run", G_CALLBACK(self_icon_activate_run_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-update", G_CALLBACK(self_icon_activate_update_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-properties", G_CALLBACK(self_icon_activate_properties_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-help", G_CALLBACK(self_icon_activate_help_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-about", G_CALLBACK(self_icon_activate_about_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "activate-remove", G_CALLBACK(self_icon_activate_remove_h), self);
- g_signal_connect(G_OBJECT(selfp->icon), "destroy", G_CALLBACK(self_icon_destroy_h), self);
-
- self_update_command(self);
+ g_object_connect(selfp->icon,
+ "signal::activate", self_icon_activate_h, self,
+ "signal::activate-summary", self_icon_activate_summary_h, self,
+ "signal::activate-update", self_icon_activate_update_h, self,
+ "signal::activate-properties", self_icon_activate_properties_h, self,
+ "signal::activate-help", self_icon_activate_help_h, self,
+ "signal::activate-about", self_icon_activate_about_h, self,
+ "signal::activate-remove", self_icon_activate_remove_h, self,
+ "signal::destroy", self_icon_destroy_h, self,
+ NULL);
+
self_update_sensitivity(self);
self_update_icon(self);
}
private void
- notify_double_clicked_command_cb (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
- gpointer user_data (check null))
- {
- Self *self = user_data;
-
- GDK_THREADS_ENTER();
- self_update_command(self);
- GDK_THREADS_LEAVE();
- }
-
- private void
notify_blink_on_errors_cb (GConfClient *client,
guint cnxn_id,
GConfEntry *entry,
@@ -130,17 +140,14 @@ class MN:Shell from G:Object
icon_activate_h (MN:Mail:Icon *icon (check null type),
gpointer user_data (check null))
{
- Self *self = user_data;
- if (eel_gconf_get_boolean(MN_CONF_COMMANDS_DOUBLE_CLICKED_ENABLED))
- self_run_double_clicked_command(self);
+ mn_summary_dialog_display();
}
private void
- icon_activate_run_h (MN:Mail:Icon *icon (check null type),
- gpointer user_data (check null))
+ icon_activate_summary_h (MN:Mail:Icon *icon (check null type),
+ gpointer user_data (check null))
{
- Self *self = user_data;
- self_run_double_clicked_command(self);
+ mn_summary_dialog_display();
}
private void
@@ -162,7 +169,7 @@ class MN:Shell from G:Object
icon_activate_help_h (MN:Mail:Icon *icon (check null type),
gpointer user_data (check null))
{
- mn_display_help(NULL);
+ mn_display_help(NULL, NULL);
}
private void
@@ -192,37 +199,9 @@ class MN:Shell from G:Object
}
private void
- run_double_clicked_command (self)
- {
- char *command;
-
- command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
- if (command)
- {
- if (gnome_execute_shell(NULL, command) < 0)
- mn_error_dialog(NULL,
- _("A command error has occurred"),
- _("Unable to execute double-clicked command: %s."),
- g_strerror(errno));
-
- g_free(command);
- }
- }
-
- private void
- update_command (self)
- {
- char *command;
-
- command = eel_gconf_get_string(MN_CONF_COMMANDS_DOUBLE_CLICKED_COMMAND);
- mn_mail_icon_set_command(selfp->icon, command);
- g_free(command);
- }
-
- private void
update_sensitivity (self)
{
- gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_has_manual(self->mailboxes));
+ gtk_widget_set_sensitive(selfp->icon->update_item, mn_mailboxes_get_must_poll(self->mailboxes));
}
private void
@@ -237,7 +216,6 @@ class MN:Shell from G:Object
if (mailboxes)
{
GSList *l;
- static int old_n_new = 0;
int n_new = 0;
int n_error = 0;
int n_unsupported = 0;
@@ -314,28 +292,6 @@ class MN:Shell from G:Object
g_string_free(new_string, TRUE);
g_string_free(error_string, TRUE);
g_string_free(unsupported_string, TRUE);
-
- if (old_n_new == 0 && n_new > 0)
- {
- gnome_triggers_do(_("You have new mail."), NULL, "mail-notification", "new-mail", NULL);
- if (eel_gconf_get_boolean(MN_CONF_COMMANDS_NEW_MAIL_ENABLED))
- {
- char *command;
-
- command = eel_gconf_get_string(MN_CONF_COMMANDS_NEW_MAIL_COMMAND);
- if (command)
- {
- if (gnome_execute_shell(NULL, command) < 0)
- mn_error_dialog(NULL,
- _("A command error has occurred in Mail Notification"),
- _("Unable to execute new mail command: %s."),
- g_strerror(errno));
-
- g_free(command);
- }
- }
- }
- old_n_new = n_new;
}
if (show || blink)
@@ -367,7 +323,7 @@ class MN:Shell from G:Object
}
selfp->about = mn_about_dialog_new();
- g_object_add_weak_pointer(G_OBJECT(selfp->about), (gpointer *) &selfp->about);
+ eel_add_weak_pointer(&selfp->about);
gtk_widget_show(GTK_WIDGET(selfp->about));
}
diff --git a/src/mn-shell.h b/src/mn-shell.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-soup.c b/src/mn-soup.c
@@ -33,72 +33,16 @@
#define CONF_PROXY_SOCKS_HOST CONF_PROXY_NAMESPACE "/socks_host"
#define CONF_PROXY_SOCKS_PORT CONF_PROXY_NAMESPACE "/socks_port"
-/*** variables ***************************************************************/
-
-static int use_count = 0;
-G_LOCK_DEFINE_STATIC(use_count);
-static unsigned int http_proxy_notification_id;
-static unsigned int proxy_notification_id;
-
/*** functions ***************************************************************/
-static void mn_soup_notify_proxy_cb (GConfClient *client,
- unsigned int cnxn_id,
- GConfEntry *entry,
- gpointer user_data);
-static void mn_soup_update_proxy (void);
+static char *mn_soup_build_proxy_uri (void);
/*** implementation **********************************************************/
-void
-mn_soup_use (void)
-{
- G_LOCK(use_count);
- if (++use_count == 1)
- {
- eel_gconf_monitor_add(CONF_HTTP_PROXY_NAMESPACE);
- eel_gconf_monitor_add(CONF_PROXY_NAMESPACE);
-
- mn_soup_update_proxy();
-
- http_proxy_notification_id = eel_gconf_notification_add(CONF_HTTP_PROXY_NAMESPACE, mn_soup_notify_proxy_cb, NULL);
- proxy_notification_id = eel_gconf_notification_add(CONF_PROXY_NAMESPACE, mn_soup_notify_proxy_cb, NULL);
- }
- G_UNLOCK(use_count);
-}
-
-void
-mn_soup_unuse (void)
-{
- G_LOCK(use_count);
- g_return_if_fail(use_count > 0);
- if (--use_count == 0)
- {
- eel_gconf_notification_remove(http_proxy_notification_id);
- eel_gconf_notification_remove(proxy_notification_id);
- eel_gconf_monitor_remove(CONF_HTTP_PROXY_NAMESPACE);
- eel_gconf_monitor_remove(CONF_PROXY_NAMESPACE);
-
- soup_shutdown();
- }
- G_UNLOCK(use_count);
-}
-
-static void
-mn_soup_notify_proxy_cb (GConfClient *client,
- unsigned int cnxn_id,
- GConfEntry *entry,
- gpointer user_data)
+static char *
+mn_soup_build_proxy_uri (void)
{
- GDK_THREADS_ENTER();
- mn_soup_update_proxy();
- GDK_THREADS_LEAVE();
-}
-
-static void
-mn_soup_update_proxy (void)
-{
- SoupContext *context = NULL;
+ char *uri = NULL;
char *mode;
mode = eel_gconf_get_string(CONF_PROXY_MODE);
@@ -114,7 +58,6 @@ mn_soup_update_proxy (void)
if (*socks_host)
{
int socks_port;
- char *uri;
socks_port = eel_gconf_get_integer(CONF_PROXY_SOCKS_PORT);
if (socks_port <= 0 || socks_port > 65535)
@@ -122,9 +65,6 @@ mn_soup_update_proxy (void)
/* we assume it's a Socks 5 proxy, since it is not specified */
uri = g_strdup_printf("socks5://%s:%i", socks_host, socks_port);
- context = soup_context_get(uri);
-
- g_free(uri);
}
g_free(socks_host);
@@ -133,7 +73,7 @@ mn_soup_update_proxy (void)
g_free(mode);
}
- if (! context)
+ if (! uri)
{
if (eel_gconf_get_boolean(CONF_HTTP_PROXY_USE_HTTP_PROXY))
{
@@ -146,10 +86,10 @@ mn_soup_update_proxy (void)
{
if (*host)
{
- GString *uri;
+ GString *string;
int port;
- uri = g_string_new("http://");
+ string = g_string_new("http://");
port = eel_gconf_get_integer(CONF_HTTP_PROXY_PORT);
if (port <= 0 || port > 65535)
@@ -165,16 +105,14 @@ mn_soup_update_proxy (void)
if (authentication_user && authentication_password
&& *authentication_user && *authentication_password)
- g_string_append_printf(uri, "%s:%s@", authentication_user, authentication_password);
+ g_string_append_printf(string, "%s:%s@", authentication_user, authentication_password);
g_free(authentication_user);
g_free(authentication_password);
}
- g_string_append_printf(uri, "%s:%i", host, port);
-
- context = soup_context_get(uri->str);
- g_string_free(uri, TRUE);
+ g_string_append_printf(string, "%s:%i", host, port);
+ uri = g_string_free(string, FALSE);
}
g_free(host);
@@ -182,7 +120,18 @@ mn_soup_update_proxy (void)
}
}
- soup_set_proxy(context);
- if (context)
- soup_context_unref(context);
+ return uri;
+}
+
+SoupSession *
+mn_soup_session_new (void)
+{
+ char *proxy_uri;
+ SoupSession *session;
+
+ proxy_uri = mn_soup_build_proxy_uri();
+ session = soup_session_async_new_with_options(SOUP_SESSION_PROXY_URI, proxy_uri, NULL);
+ g_free(proxy_uri);
+
+ return session;
}
diff --git a/src/mn-soup.h b/src/mn-soup.h
@@ -19,7 +19,8 @@
#ifndef _MN_SOUP_H
#define _MN_SOUP_H
-void mn_soup_use (void);
-void mn_soup_unuse (void);
+#include <libsoup/soup.h>
+
+SoupSession *mn_soup_session_new (void);
#endif /* _MN_SOUP_H */
diff --git a/src/mn-stock.c b/src/mn-stock.c
@@ -26,6 +26,7 @@
static const GtkStockItem items[] = {
{ MN_STOCK_SELECT_ALL, N_("Select _All"), 0, 0, NULL },
+ { MN_STOCK_MAIL_SUMMARY, N_("_Mail Summary"), 0, 0, NULL }
};
/*** implementation **********************************************************/
@@ -47,7 +48,8 @@ mn_stock_init (void)
{ MN_STOCK_GMAIL, "gmail.png", NULL },
#endif
{ MN_STOCK_SYSTEM_MAILBOX, NULL, "gnome-system" },
- { MN_STOCK_SELECT_ALL, NULL, "stock_select-all" }
+ { MN_STOCK_SELECT_ALL, NULL, "stock_select-all" },
+ { MN_STOCK_MAIL_SUMMARY, "mail-notification.png", NULL }
};
GtkIconFactory *factory;
GtkIconTheme *icon_theme;
diff --git a/src/mn-stock.h b/src/mn-stock.h
@@ -30,6 +30,7 @@
#endif
#define MN_STOCK_SYSTEM_MAILBOX "mail-notification-system-mailbox"
#define MN_STOCK_SELECT_ALL "mail-notification-select-all"
+#define MN_STOCK_MAIL_SUMMARY "mail-notification-mail-summary"
void mn_stock_init (void);
diff --git a/src/mn-summary-dialog.c b/src/mn-summary-dialog.c
@@ -0,0 +1,128 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include <eel/eel.h>
+#include "mn-util.h"
+#include "mn-shell.h"
+#include "mn-conf.h"
+#include "mn-summary-popup.h"
+#include "mn-summary.h"
+
+/*** types *******************************************************************/
+
+typedef struct
+{
+ GtkWidget *dialog;
+
+ GtkWidget *vbox;
+ GtkWidget *update_button;
+} SummaryDialog;
+
+/*** variables ***************************************************************/
+
+static SummaryDialog summary = { NULL };
+
+/*** functions ***************************************************************/
+
+static void mn_summary_dialog_update (void);
+static void mn_summary_dialog_update_sensitivity (void);
+
+/*** implementation **********************************************************/
+
+void
+mn_summary_dialog_display (void)
+{
+ g_return_if_fail(mn_shell != NULL);
+
+ /* we don't need the popup anymore */
+ mn_summary_popup_destroy();
+
+ if (summary.dialog)
+ {
+ gtk_window_present(GTK_WINDOW(summary.dialog));
+ return;
+ }
+
+ mn_create_interface("summary-dialog",
+ "dialog", &summary.dialog,
+ "vbox", &summary.vbox,
+ "update_button", &summary.update_button,
+ NULL);
+
+ eel_add_weak_pointer(&summary.dialog);
+
+ mn_conf_link(summary.dialog, MN_CONF_SUMMARY_DIALOG, NULL);
+
+ mn_summary_dialog_update();
+ mn_summary_dialog_update_sensitivity();
+
+ mn_g_object_connect(summary.dialog,
+ mn_shell->mailboxes,
+ "signal::notify::must-poll", mn_summary_dialog_update_sensitivity, NULL,
+ "signal::messages-changed", mn_summary_dialog_update, NULL,
+ NULL);
+
+ gtk_widget_show(summary.dialog);
+}
+
+gboolean
+mn_summary_dialog_is_displayed (void)
+{
+ return summary.dialog != NULL;
+}
+
+static void
+mn_summary_dialog_update (void)
+{
+ GSList *messages;
+
+ messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
+ mn_summary_update(GTK_VBOX(summary.vbox), messages, TRUE);
+ mn_g_object_slist_free(messages);
+}
+
+static void
+mn_summary_dialog_update_sensitivity (void)
+{
+ gtk_widget_set_sensitive(summary.update_button, mn_mailboxes_get_must_poll(mn_shell->mailboxes));
+}
+
+/* libglade callbacks */
+
+void
+mn_summary_dialog_response_h (GtkDialog *dialog,
+ int response,
+ gpointer user_data)
+{
+ switch (response)
+ {
+ case GTK_RESPONSE_HELP:
+ mn_display_help(GTK_WINDOW(dialog), "mail-summary");
+ break;
+
+ case 1: /* update */
+ mn_mailboxes_check(mn_shell->mailboxes);
+ break;
+
+ case GTK_RESPONSE_CLOSE:
+ gtk_widget_destroy(summary.dialog);
+ break;
+ }
+}
diff --git a/src/mn-summary-dialog.h b/src/mn-summary-dialog.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_SUMMARY_DIALOG_H
+#define _MN_SUMMARY_DIALOG_H
+
+#include <glib.h>
+
+void mn_summary_dialog_display (void);
+gboolean mn_summary_dialog_is_displayed (void);
+
+#endif /* _MN_SUMMARY_DIALOG_H */
diff --git a/src/mn-summary-popup.c b/src/mn-summary-popup.c
@@ -0,0 +1,345 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+#include <glib/gi18n-lib.h>
+#include <eel/eel.h>
+#include "mn-summary.h"
+#include "mn-util.h"
+#include "mn-shell.h"
+#include "mn-conf.h"
+#include "mn-stock.h"
+#include "mn-summary-dialog.h"
+#include "mn-summary-popup.h"
+
+/*** types *******************************************************************/
+
+typedef struct
+{
+ gboolean enabled;
+
+ GtkWidget *popup;
+ GtkWidget *image;
+ GtkWidget *vbox;
+ unsigned int timeout_id;
+} SummaryPopup;
+
+/*** variables ***************************************************************/
+
+static SummaryPopup popup = { FALSE };
+
+/*** functions ***************************************************************/
+
+static void mn_summary_popup_notify_enable_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data);
+static void mn_summary_popup_notify_autoclose_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data);
+static void mn_summary_popup_notify_delay_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data);
+static void mn_summary_popup_notify_geometry_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data);
+
+static void mn_summary_popup_enable (void);
+static void mn_summary_popup_disable (void);
+
+static void mn_summary_popup_messages_changed_h (MNMailboxes *mailboxes,
+ gboolean has_new,
+ gpointer user_data);
+
+static void mn_summary_popup_update (gboolean has_new);
+static void mn_summary_popup_set_geometry (void);
+
+static void mn_summary_popup_install_timeout (void);
+static void mn_summary_popup_remove_timeout (void);
+
+static gboolean mn_summary_popup_timeout_cb (gpointer data);
+
+/*** implementation **********************************************************/
+
+void
+mn_summary_popup_init (void)
+{
+ g_return_if_fail(mn_shell != NULL);
+
+ if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
+ mn_summary_popup_enable();
+
+ eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE, mn_summary_popup_notify_enable_cb, NULL);
+ eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE, mn_summary_popup_notify_autoclose_cb, NULL);
+ eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_NAMESPACE, mn_summary_popup_notify_delay_cb, NULL);
+ eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_POSITION, mn_summary_popup_notify_geometry_cb, NULL);
+ eel_gconf_notification_add(MN_CONF_MAIL_SUMMARY_POPUP_OFFSET_NAMESPACE, mn_summary_popup_notify_geometry_cb, NULL);
+}
+
+static void
+mn_summary_popup_notify_enable_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ GDK_THREADS_ENTER();
+
+ if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_ENABLE))
+ mn_summary_popup_enable();
+ else
+ mn_summary_popup_disable();
+
+ GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_notify_autoclose_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ GDK_THREADS_ENTER();
+
+ if (popup.enabled)
+ {
+ if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
+ {
+ if (popup.popup && ! popup.timeout_id)
+ mn_summary_popup_install_timeout();
+ }
+ else
+ mn_summary_popup_remove_timeout();
+ }
+
+ GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_notify_delay_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ GDK_THREADS_ENTER();
+
+ if (popup.enabled && popup.popup && eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE))
+ {
+ mn_summary_popup_remove_timeout();
+ mn_summary_popup_install_timeout();
+ }
+
+ GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_notify_geometry_cb (GConfClient *client,
+ guint cnxn_id,
+ GConfEntry *entry,
+ gpointer user_data)
+{
+ GDK_THREADS_ENTER();
+
+ if (popup.enabled && popup.popup)
+ mn_summary_popup_set_geometry();
+
+ GDK_THREADS_LEAVE();
+}
+
+static void
+mn_summary_popup_enable (void)
+{
+ if (! popup.enabled)
+ {
+ popup.enabled = TRUE;
+ g_signal_connect(mn_shell->mailboxes, "messages-changed", G_CALLBACK(mn_summary_popup_messages_changed_h), NULL);
+ }
+}
+
+static void
+mn_summary_popup_disable (void)
+{
+ if (popup.enabled)
+ {
+ popup.enabled = FALSE;
+ g_signal_handlers_disconnect_by_func(mn_shell->mailboxes, mn_summary_popup_messages_changed_h, NULL);
+ mn_summary_popup_destroy();
+ }
+}
+
+static void
+mn_summary_popup_messages_changed_h (MNMailboxes *mailboxes,
+ gboolean has_new,
+ gpointer user_data)
+{
+ mn_summary_popup_update(has_new);
+}
+
+static void
+mn_summary_popup_update (gboolean has_new)
+{
+ gboolean displayed = FALSE;
+
+ if (popup.popup)
+ {
+ displayed = TRUE;
+ gtk_widget_destroy(popup.popup);
+ }
+
+ if (! mn_summary_dialog_is_displayed() && (displayed || has_new))
+ {
+ GSList *messages;
+
+ messages = mn_mailboxes_get_messages(mn_shell->mailboxes);
+ if (messages)
+ {
+ mn_create_interface("summary-popup",
+ "popup", &popup.popup,
+ "image", &popup.image,
+ "vbox", &popup.vbox,
+ NULL);
+ eel_add_weak_pointer(&popup.popup);
+
+ /*
+ * The popup must:
+ *
+ * - be sticky
+ * - be kept above other windows
+ * - not be focusable
+ * - not be decorated
+ * - not appear in the pager
+ * - not appear in the taskbar
+ *
+ * An easy way to meet these requirements is to use a window
+ * of type GTK_WINDOW_POPUP, but unfortunately these are not
+ * hidden by xscreensaver
+ * (http://bugzilla.gnome.org/show_bug.cgi?id=154529).
+ *
+ * We therefore use a window of type GTK_WINDOW_TOPLEVEL,
+ * and we set the appropriate properties in the glade file
+ * and below (but a drawback is
+ * http://bugzilla.gnome.org/show_bug.cgi?id=154593).
+ */
+
+ gtk_window_stick(GTK_WINDOW(popup.popup));
+ gtk_window_set_keep_above(GTK_WINDOW(popup.popup), TRUE);
+ gtk_window_set_accept_focus(GTK_WINDOW(popup.popup), FALSE);
+
+ gtk_widget_realize(popup.popup);
+ gdk_window_set_decorations(popup.popup->window, GDK_DECOR_BORDER);
+
+ gtk_image_set_from_stock(GTK_IMAGE(popup.image), MN_STOCK_MAIL_SUMMARY, -1);
+
+ mn_summary_update(GTK_VBOX(popup.vbox), messages, FALSE);
+ mn_g_object_slist_free(messages);
+
+ mn_summary_popup_set_geometry();
+ gtk_widget_show(popup.popup);
+
+ /* we only reset the timeout if there is new mail */
+
+ if (eel_gconf_get_boolean(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE) && has_new)
+ {
+ mn_summary_popup_remove_timeout();
+ mn_summary_popup_install_timeout();
+ }
+ }
+ }
+}
+
+static void
+mn_summary_popup_set_geometry (void)
+{
+ GEnumValue *enum_value;
+ MNPosition position;
+ char *geometry;
+
+ g_return_if_fail(popup.popup != NULL);
+
+ enum_value = mn_conf_get_enum_value(MN_TYPE_POSITION, MN_CONF_MAIL_SUMMARY_POPUP_POSITION);
+ position = enum_value ? enum_value->value : MN_POSITION_TOP_LEFT;
+
+ geometry = g_strdup_printf("%c%i%c%i",
+ (position == MN_POSITION_TOP_RIGHT || position == MN_POSITION_BOTTOM_RIGHT) ? '-' : '+',
+ eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_HORIZONTAL_OFFSET),
+ (position == MN_POSITION_BOTTOM_LEFT || position == MN_POSITION_BOTTOM_RIGHT) ? '-' : '+',
+ eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_VERTICAL_OFFSET));
+ gtk_window_parse_geometry(GTK_WINDOW(popup.popup), geometry);
+ g_free(geometry);
+}
+
+void
+mn_summary_popup_destroy (void)
+{
+ if (popup.popup)
+ {
+ mn_summary_popup_remove_timeout();
+ gtk_widget_destroy(popup.popup);
+ }
+}
+
+static void
+mn_summary_popup_install_timeout (void)
+{
+ int minutes;
+ int seconds;
+
+ g_return_if_fail(popup.timeout_id == 0);
+
+ minutes = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_MINUTES);
+ seconds = eel_gconf_get_integer(MN_CONF_MAIL_SUMMARY_POPUP_AUTOCLOSE_DELAY_SECONDS);
+
+ if (minutes != 0 || seconds != 0)
+ popup.timeout_id = g_timeout_add(((minutes * 60) + seconds) * 1000,
+ mn_summary_popup_timeout_cb,
+ NULL);
+}
+
+static void
+mn_summary_popup_remove_timeout (void)
+{
+ if (popup.timeout_id)
+ {
+ g_source_remove(popup.timeout_id);
+ popup.timeout_id = 0;
+ }
+}
+
+static gboolean
+mn_summary_popup_timeout_cb (gpointer data)
+{
+ GDK_THREADS_ENTER();
+ gtk_widget_destroy(popup.popup);
+ GDK_THREADS_LEAVE();
+
+ return FALSE; /* remove timeout */
+}
+
+/* libglade callbacks */
+
+gboolean
+mn_summary_popup_button_press_event_h (GtkWidget *widget,
+ GdkEventButton *button,
+ gpointer user_data)
+{
+ mn_summary_popup_destroy();
+
+ return TRUE; /* do not propagate event */
+}
diff --git a/src/mn-summary-popup.h b/src/mn-summary-popup.h
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_SUMMARY_POPUP_H
+#define _MN_SUMMARY_POPUP_H
+
+void mn_summary_popup_init (void);
+void mn_summary_popup_destroy (void);
+
+#endif /* _MN_SUMMARY_POPUP_H */
diff --git a/src/mn-summary.c b/src/mn-summary.c
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include <gtk/gtk.h>
+#include "mn-util.h"
+#include "mn-message-label.h"
+
+void
+mn_summary_update (GtkVBox *vbox, GSList *messages, gboolean selectable)
+{
+ GSList *l;
+
+ g_return_if_fail(GTK_IS_VBOX(vbox));
+
+ gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) gtk_widget_destroy, NULL);
+
+ MN_LIST_FOREACH(l, messages)
+ {
+ MNMessage *message = l->data;
+ GtkWidget *label;
+
+ label = mn_message_label_new(message);
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+ if (selectable)
+ gtk_label_set_selectable(GTK_LABEL(label), TRUE);
+
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_widget_show(label);
+
+ if (l->next)
+ { /* spacing between messages */
+ label = gtk_label_new(NULL);
+ gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
+ gtk_widget_show(label);
+ }
+ }
+}
diff --git a/src/mn-summary.h b/src/mn-summary.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2004 Jean-Yves Lefort <jylefort@brutele.be>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#ifndef _MN_SUMMARY_H
+#define _MN_SUMMARY_H
+
+#include <gtk/gtk.h>
+
+void mn_summary_update (GtkVBox *vbox, GSList *messages, gboolean selectable);
+
+#endif /* _MN_SUMMARY_H */
diff --git a/src/mn-sylpheed-mailbox-private.h b/src/mn-sylpheed-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_SYLPHEED_MAILBOX_PRIVATE_H__
#define __MN_SYLPHEED_MAILBOX_PRIVATE_H__
diff --git a/src/mn-sylpheed-mailbox.c b/src/mn-sylpheed-mailbox.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:52 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-sylpheed-mailbox.h"
#include "mn-sylpheed-mailbox-private.h"
@@ -21,15 +23,33 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-sylpheed-mailbox.gob"
+#line 24 "mn-sylpheed-mailbox.gob"
#include "config.h"
+#include <stdlib.h>
#include <glib/gi18n-lib.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
+
+/* taken from procmsg.h in the Sylpheed sources */
+#define SYLPHEED_MSG_NEW (1U << 0)
+#define SYLPHEED_MSG_UNREAD (1U << 1)
+
+/* taken from defs.h in the Sylpheed sources */
+#define SYLPHEED_MARK_FILE ".sylpheed_mark"
+#define SYLPHEED_MARK_VERSION 2
-#line 33 "mn-sylpheed-mailbox.c"
+ typedef struct
+ {
+ int num;
+ guint32 flags;
+ } MarkEntry;
+
+#line 53 "mn-sylpheed-mailbox.c"
/* self casting macros */
#define SELF(x) MN_SYLPHEED_MAILBOX(x)
#define SELF_CONST(x) MN_SYLPHEED_MAILBOX_CONST(x)
@@ -49,10 +69,13 @@ static void mn_sylpheed_mailbox_class_init (MNSylpheedMailboxClass * class) G_GN
static GObject * ___2_mn_sylpheed_mailbox_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_params) G_GNUC_UNUSED;
static gboolean ___3_mn_sylpheed_mailbox_impl_is (MNMailbox * dummy, MNURI * uri) G_GNUC_UNUSED;
static void ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self) G_GNUC_UNUSED;
+static GHashTable * mn_sylpheed_mailbox_get_seen_numbers (MNSylpheedMailbox * self) G_GNUC_UNUSED;
/* pointer to the class of our parent */
static MNMailboxClass *parent_class = NULL;
+/* Short form macros */
+#define self_get_seen_numbers mn_sylpheed_mailbox_get_seen_numbers
GType
mn_sylpheed_mailbox_get_type (void)
{
@@ -101,10 +124,10 @@ mn_sylpheed_mailbox_init (MNSylpheedMailbox * o G_GNUC_UNUSED)
#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::init"
}
#undef __GOB_FUNCTION__
-#line 32 "mn-sylpheed-mailbox.gob"
+#line 52 "mn-sylpheed-mailbox.gob"
static void
mn_sylpheed_mailbox_class_init (MNSylpheedMailboxClass * class G_GNUC_UNUSED)
-#line 108 "mn-sylpheed-mailbox.c"
+#line 131 "mn-sylpheed-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::class_init"
GObjectClass *g_object_class = (GObjectClass *)class;
@@ -112,29 +135,29 @@ mn_sylpheed_mailbox_class_init (MNSylpheedMailboxClass * class G_GNUC_UNUSED)
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
-#line 37 "mn-sylpheed-mailbox.gob"
+#line 57 "mn-sylpheed-mailbox.gob"
g_object_class->constructor = ___2_mn_sylpheed_mailbox_constructor;
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
mn_mailbox_class->impl_is = ___3_mn_sylpheed_mailbox_impl_is;
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
mn_mailbox_class->impl_threaded_check = ___4_mn_sylpheed_mailbox_impl_threaded_check;
-#line 122 "mn-sylpheed-mailbox.c"
+#line 145 "mn-sylpheed-mailbox.c"
{
-#line 33 "mn-sylpheed-mailbox.gob"
+#line 53 "mn-sylpheed-mailbox.gob"
MN_MAILBOX_CLASS(class)->format = "Sylpheed";
-#line 128 "mn-sylpheed-mailbox.c"
+#line 151 "mn-sylpheed-mailbox.c"
}
}
#undef __GOB_FUNCTION__
-#line 37 "mn-sylpheed-mailbox.gob"
+#line 57 "mn-sylpheed-mailbox.gob"
static GObject *
___2_mn_sylpheed_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construct_properties, GObjectConstructParam * construct_params)
-#line 138 "mn-sylpheed-mailbox.c"
+#line 161 "mn-sylpheed-mailbox.c"
#define PARENT_HANDLER(___type,___n_construct_properties,___construct_params) \
((G_OBJECT_CLASS(parent_class)->constructor)? \
(* G_OBJECT_CLASS(parent_class)->constructor)(___type,___n_construct_properties,___construct_params): \
@@ -142,7 +165,7 @@ ___2_mn_sylpheed_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construc
{
#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::constructor"
{
-#line 39 "mn-sylpheed-mailbox.gob"
+#line 59 "mn-sylpheed-mailbox.gob"
GObject *object;
MNMailbox *self;
@@ -164,27 +187,27 @@ ___2_mn_sylpheed_mailbox_constructor (GType type G_GNUC_UNUSED, guint n_construc
return object;
}}
-#line 168 "mn-sylpheed-mailbox.c"
+#line 191 "mn-sylpheed-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
static gboolean
___3_mn_sylpheed_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
-#line 175 "mn-sylpheed-mailbox.c"
+#line 198 "mn-sylpheed-mailbox.c"
#define PARENT_HANDLER(___dummy,___uri) \
((MN_MAILBOX_CLASS(parent_class)->impl_is)? \
(* MN_MAILBOX_CLASS(parent_class)->impl_is)(___dummy,___uri): \
((gboolean )0))
{
#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::impl_is"
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 61 "mn-sylpheed-mailbox.gob"
+#line 81 "mn-sylpheed-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (gboolean )0);
-#line 186 "mn-sylpheed-mailbox.c"
+#line 209 "mn-sylpheed-mailbox.c"
{
-#line 63 "mn-sylpheed-mailbox.gob"
+#line 83 "mn-sylpheed-mailbox.gob"
gboolean is = FALSE;
@@ -192,40 +215,49 @@ ___3_mn_sylpheed_mailbox_impl_is (MNMailbox * dummy G_GNUC_UNUSED, MNURI * uri)
{
GnomeVFSURI *markfile_uri;
- markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, ".sylpheed_mark");
+ markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, SYLPHEED_MARK_FILE);
is = mn_vfs_test(markfile_uri, G_FILE_TEST_IS_REGULAR);
gnome_vfs_uri_unref(markfile_uri);
}
return is;
}}
-#line 203 "mn-sylpheed-mailbox.c"
+#line 226 "mn-sylpheed-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
static void
___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
-#line 210 "mn-sylpheed-mailbox.c"
+#line 233 "mn-sylpheed-mailbox.c"
#define PARENT_HANDLER(___self) \
{ if(MN_MAILBOX_CLASS(parent_class)->impl_threaded_check) \
(* MN_MAILBOX_CLASS(parent_class)->impl_threaded_check)(___self); }
{
#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::impl_threaded_check"
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
g_return_if_fail (self != NULL);
-#line 78 "mn-sylpheed-mailbox.gob"
+#line 98 "mn-sylpheed-mailbox.gob"
g_return_if_fail (MN_IS_MAILBOX (self));
-#line 220 "mn-sylpheed-mailbox.c"
+#line 243 "mn-sylpheed-mailbox.c"
{
-#line 80 "mn-sylpheed-mailbox.gob"
+#line 100 "mn-sylpheed-mailbox.gob"
GnomeVFSResult result;
GnomeVFSResult close_result;
GnomeVFSDirectoryHandle *handle;
GnomeVFSFileInfo *file_info;
+#ifdef WITH_MIME
+ GHashTable *seen_numbers;
+ GSList *messages = NULL;
+#else /* WITH_MIME */
int total_count = 0;
int mark_count = 0;
+#endif /* WITH_MIME */
+
+#ifdef WITH_MIME
+ seen_numbers = self_get_seen_numbers(SELF(self));
+#endif
result = gnome_vfs_directory_open_from_uri(&handle, self->uri->vfs, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
if (result != GNOME_VFS_OK)
@@ -247,14 +279,31 @@ ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
if (file_info->name[0] != '.')
{
if (mn_str_isnumeric(file_info->name))
- total_count++;
+ {
+#ifdef WITH_MIME
+ int num = atoi(file_info->name);
+
+ if (! g_hash_table_lookup(seen_numbers, GINT_TO_POINTER(num)))
+ {
+ GnomeVFSURI *message_uri;
+
+ message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, file_info->name);
+ messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+ gnome_vfs_uri_unref(message_uri);
+ }
+#else /* WITH_MIME */
+ total_count++;
+#endif
+ }
}
- else if (! strcmp(file_info->name, ".sylpheed_mark") && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
+#ifndef WITH_MIME
+ else if (! strcmp(file_info->name, SYLPHEED_MARK_FILE) && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
/*
* Format of a Sylpheed markfile:
- * int version, int num, int flags, int num, int flags, ...
+ * int version, int num, guint32 flags, int num, guint32 flags, ...
*/
- mark_count = (file_info->size - sizeof(int)) / (sizeof(int) * 2);
+ mark_count = (file_info->size - sizeof(int)) / (sizeof(int) + sizeof(guint32));
+#endif /* ! WITH_MIME */
}
gnome_vfs_file_info_unref(file_info);
close_result = gnome_vfs_directory_close(handle);
@@ -264,7 +313,14 @@ ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
if (result == GNOME_VFS_ERROR_EOF)
{
if (close_result == GNOME_VFS_OK)
- mn_mailbox_set_has_new(self, total_count != mark_count);
+ {
+#ifdef WITH_MIME
+ mn_mailbox_set_has_new(self, messages != NULL);
+ mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+ mn_mailbox_set_has_new(self, total_count != mark_count);
+#endif
+ }
else
mn_mailbox_set_error(self, _("unable to close folder: %s"), gnome_vfs_result_to_string(close_result));
}
@@ -274,7 +330,64 @@ ___4_mn_sylpheed_mailbox_impl_threaded_check (MNMailbox * self G_GNUC_UNUSED)
gdk_flush();
GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+ g_hash_table_destroy(seen_numbers);
+ mn_g_object_slist_free(messages);
+#endif
}}
-#line 279 "mn-sylpheed-mailbox.c"
+#line 340 "mn-sylpheed-mailbox.c"
#undef __GOB_FUNCTION__
#undef PARENT_HANDLER
+
+#line 195 "mn-sylpheed-mailbox.gob"
+static GHashTable *
+mn_sylpheed_mailbox_get_seen_numbers (MNSylpheedMailbox * self)
+#line 347 "mn-sylpheed-mailbox.c"
+{
+#define __GOB_FUNCTION__ "MN:Sylpheed:Mailbox::get_seen_numbers"
+#line 195 "mn-sylpheed-mailbox.gob"
+ g_return_val_if_fail (self != NULL, (GHashTable * )0);
+#line 195 "mn-sylpheed-mailbox.gob"
+ g_return_val_if_fail (MN_IS_SYLPHEED_MAILBOX (self), (GHashTable * )0);
+#line 354 "mn-sylpheed-mailbox.c"
+{
+#line 197 "mn-sylpheed-mailbox.gob"
+
+#ifdef WITH_MIME
+ GHashTable *seen_numbers;
+ char *uri;
+ int file_size;
+ char *buf;
+
+ seen_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+ uri = g_build_path("/", MN_MAILBOX(self)->uri->text, SYLPHEED_MARK_FILE, NULL);
+ if (gnome_vfs_read_entire_file(uri, &file_size, &buf) == GNOME_VFS_OK)
+ {
+ if (file_size >= sizeof(int) && *((int *) buf) == SYLPHEED_MARK_VERSION)
+ {
+ int pos = sizeof(int); /* start after version */
+
+ while (pos + sizeof(MarkEntry) <= file_size)
+ {
+ MarkEntry *entry = (MarkEntry *) (buf + pos);
+
+ if (! (entry->flags & SYLPHEED_MSG_NEW) && ! (entry->flags & SYLPHEED_MSG_UNREAD))
+ g_hash_table_insert(seen_numbers, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(TRUE));
+
+ pos += sizeof(MarkEntry);
+ }
+ }
+
+ g_free(buf);
+ }
+ g_free(uri);
+
+ return seen_numbers;
+#else /* WITH_MIME */
+ g_return_val_if_reached(NULL);
+#endif
+ }}
+#line 393 "mn-sylpheed-mailbox.c"
+#undef __GOB_FUNCTION__
diff --git a/src/mn-sylpheed-mailbox.gob b/src/mn-sylpheed-mailbox.gob
@@ -16,15 +16,35 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
%{
#include "config.h"
+#include <stdlib.h>
#include <glib/gi18n-lib.h>
#include "mn-mailbox-private.h"
#include "mn-vfs.h"
#include "mn-util.h"
+#ifdef WITH_MIME
+#include "mn-message-mime.h"
+#endif
+
+/* taken from procmsg.h in the Sylpheed sources */
+#define SYLPHEED_MSG_NEW (1U << 0)
+#define SYLPHEED_MSG_UNREAD (1U << 1)
+
+/* taken from defs.h in the Sylpheed sources */
+#define SYLPHEED_MARK_FILE ".sylpheed_mark"
+#define SYLPHEED_MARK_VERSION 2
+
+ typedef struct
+ {
+ int num;
+ guint32 flags;
+ } MarkEntry;
%}
class MN:Sylpheed:Mailbox from MN:Mailbox
@@ -67,7 +87,7 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
{
GnomeVFSURI *markfile_uri;
- markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, ".sylpheed_mark");
+ markfile_uri = gnome_vfs_uri_append_file_name(uri->vfs, SYLPHEED_MARK_FILE);
is = mn_vfs_test(markfile_uri, G_FILE_TEST_IS_REGULAR);
gnome_vfs_uri_unref(markfile_uri);
}
@@ -82,8 +102,17 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
GnomeVFSResult close_result;
GnomeVFSDirectoryHandle *handle;
GnomeVFSFileInfo *file_info;
+#ifdef WITH_MIME
+ GHashTable *seen_numbers;
+ GSList *messages = NULL;
+#else /* WITH_MIME */
int total_count = 0;
int mark_count = 0;
+#endif /* WITH_MIME */
+
+#ifdef WITH_MIME
+ seen_numbers = self_get_seen_numbers(SELF(self));
+#endif
result = gnome_vfs_directory_open_from_uri(&handle, self->uri->vfs, GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
if (result != GNOME_VFS_OK)
@@ -105,14 +134,31 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
if (file_info->name[0] != '.')
{
if (mn_str_isnumeric(file_info->name))
- total_count++;
+ {
+#ifdef WITH_MIME
+ int num = atoi(file_info->name);
+
+ if (! g_hash_table_lookup(seen_numbers, GINT_TO_POINTER(num)))
+ {
+ GnomeVFSURI *message_uri;
+
+ message_uri = gnome_vfs_uri_append_file_name(self->uri->vfs, file_info->name);
+ messages = g_slist_append(messages, mn_message_new_from_uri(self->uri, message_uri));
+ gnome_vfs_uri_unref(message_uri);
+ }
+#else /* WITH_MIME */
+ total_count++;
+#endif
+ }
}
- else if (! strcmp(file_info->name, ".sylpheed_mark") && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
+#ifndef WITH_MIME
+ else if (! strcmp(file_info->name, SYLPHEED_MARK_FILE) && file_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_SIZE)
/*
* Format of a Sylpheed markfile:
- * int version, int num, int flags, int num, int flags, ...
+ * int version, int num, guint32 flags, int num, guint32 flags, ...
*/
- mark_count = (file_info->size - sizeof(int)) / (sizeof(int) * 2);
+ mark_count = (file_info->size - sizeof(int)) / (sizeof(int) + sizeof(guint32));
+#endif /* ! WITH_MIME */
}
gnome_vfs_file_info_unref(file_info);
close_result = gnome_vfs_directory_close(handle);
@@ -122,7 +168,14 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
if (result == GNOME_VFS_ERROR_EOF)
{
if (close_result == GNOME_VFS_OK)
- mn_mailbox_set_has_new(self, total_count != mark_count);
+ {
+#ifdef WITH_MIME
+ mn_mailbox_set_has_new(self, messages != NULL);
+ mn_mailbox_set_messages(self, messages);
+#else /* WITH_MIME */
+ mn_mailbox_set_has_new(self, total_count != mark_count);
+#endif
+ }
else
mn_mailbox_set_error(self, _("unable to close folder: %s"), gnome_vfs_result_to_string(close_result));
}
@@ -132,5 +185,49 @@ class MN:Sylpheed:Mailbox from MN:Mailbox
gdk_flush();
GDK_THREADS_LEAVE();
+
+#ifdef WITH_MIME
+ g_hash_table_destroy(seen_numbers);
+ mn_g_object_slist_free(messages);
+#endif
+ }
+
+ private GHashTable *
+ get_seen_numbers (self)
+ {
+#ifdef WITH_MIME
+ GHashTable *seen_numbers;
+ char *uri;
+ int file_size;
+ char *buf;
+
+ seen_numbers = g_hash_table_new(g_direct_hash, g_direct_equal);
+
+ uri = g_build_path("/", MN_MAILBOX(self)->uri->text, SYLPHEED_MARK_FILE, NULL);
+ if (gnome_vfs_read_entire_file(uri, &file_size, &buf) == GNOME_VFS_OK)
+ {
+ if (file_size >= sizeof(int) && *((int *) buf) == SYLPHEED_MARK_VERSION)
+ {
+ int pos = sizeof(int); /* start after version */
+
+ while (pos + sizeof(MarkEntry) <= file_size)
+ {
+ MarkEntry *entry = (MarkEntry *) (buf + pos);
+
+ if (! (entry->flags & SYLPHEED_MSG_NEW) && ! (entry->flags & SYLPHEED_MSG_UNREAD))
+ g_hash_table_insert(seen_numbers, GINT_TO_POINTER(entry->num), GINT_TO_POINTER(TRUE));
+
+ pos += sizeof(MarkEntry);
+ }
+ }
+
+ g_free(buf);
+ }
+ g_free(uri);
+
+ return seen_numbers;
+#else /* WITH_MIME */
+ g_return_val_if_reached(NULL);
+#endif
}
}
diff --git a/src/mn-sylpheed-mailbox.h b/src/mn-sylpheed-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-system-mailbox-properties-private.h b/src/mn-system-mailbox-properties-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_SYSTEM_MAILBOX_PROPERTIES_PRIVATE_H__
#define __MN_SYSTEM_MAILBOX_PROPERTIES_PRIVATE_H__
@@ -10,9 +10,9 @@ extern "C" {
#endif /* __cplusplus */
struct _MNSystemMailboxPropertiesPrivate {
-#line 34 "mn-system-mailbox-properties.gob"
+#line 36 "mn-system-mailbox-properties.gob"
GtkSizeGroup * size_group;
-#line 40 "mn-system-mailbox-properties.gob"
+#line 42 "mn-system-mailbox-properties.gob"
const char * system_uri;
#line 18 "mn-system-mailbox-properties-private.h"
};
diff --git a/src/mn-system-mailbox-properties.c b/src/mn-system-mailbox-properties.c
@@ -1,14 +1,16 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:54 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
+#include <string.h> /* memset() */
+
#include "mn-system-mailbox-properties.h"
#include "mn-system-mailbox-properties-private.h"
@@ -21,14 +23,14 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-system-mailbox-properties.gob"
+#line 24 "mn-system-mailbox-properties.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include "mn-mailbox-properties.h"
-#line 32 "mn-system-mailbox-properties.c"
+#line 34 "mn-system-mailbox-properties.c"
/* self casting macros */
#define SELF(x) MN_SYSTEM_MAILBOX_PROPERTIES(x)
#define SELF_CONST(x) MN_SYSTEM_MAILBOX_PROPERTIES_CONST(x)
@@ -68,11 +70,11 @@ static GtkLabelClass *parent_class = NULL;
static void
___MN_Mailbox_Properties_init (MNMailboxPropertiesIface *iface)
{
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
iface->set_uri = self_set_uri;
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
iface->get_uri = self_get_uri;
-#line 76 "mn-system-mailbox-properties.c"
+#line 78 "mn-system-mailbox-properties.c"
}
GType
@@ -134,9 +136,9 @@ ___dispose (GObject *obj_self)
MNSystemMailboxProperties *self G_GNUC_UNUSED = MN_SYSTEM_MAILBOX_PROPERTIES (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 34 "mn-system-mailbox-properties.gob"
- if(self->_priv->size_group) { ((*(void (*)(void *))g_object_unref)) (self->_priv->size_group); self->_priv->size_group = NULL; }
-#line 140 "mn-system-mailbox-properties.c"
+#line 36 "mn-system-mailbox-properties.gob"
+ if(self->_priv->size_group) { g_object_unref ((gpointer) self->_priv->size_group); self->_priv->size_group = NULL; }
+#line 142 "mn-system-mailbox-properties.c"
}
#undef __GOB_FUNCTION__
@@ -145,11 +147,10 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::finalize"
- MNSystemMailboxProperties *self G_GNUC_UNUSED = MN_SYSTEM_MAILBOX_PROPERTIES (obj_self);
- gpointer priv = self->_priv;
+ MNSystemMailboxProperties *self G_GNUC_UNUSED = MN_SYSTEM_MAILBOX_PROPERTIES (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
- g_free (priv);
}
#undef __GOB_FUNCTION__
@@ -159,6 +160,8 @@ mn_system_mailbox_properties_class_init (MNSystemMailboxPropertiesClass * c G_GN
#define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c;
+ g_type_class_add_private(c,sizeof(MNSystemMailboxPropertiesPrivate));
+
parent_class = g_type_class_ref (GTK_TYPE_LABEL);
g_object_class->dispose = ___dispose;
@@ -178,15 +181,15 @@ mn_system_mailbox_properties_class_init (MNSystemMailboxPropertiesClass * c G_GN
}
}
#undef __GOB_FUNCTION__
-#line 42 "mn-system-mailbox-properties.gob"
+#line 44 "mn-system-mailbox-properties.gob"
static void
mn_system_mailbox_properties_init (MNSystemMailboxProperties * self G_GNUC_UNUSED)
-#line 185 "mn-system-mailbox-properties.c"
+#line 188 "mn-system-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::init"
- self->_priv = g_new0 (MNSystemMailboxPropertiesPrivate, 1);
+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,TYPE_SELF,MNSystemMailboxPropertiesPrivate);
{
-#line 43 "mn-system-mailbox-properties.gob"
+#line 45 "mn-system-mailbox-properties.gob"
gtk_label_set_line_wrap(GTK_LABEL(self), TRUE);
gtk_misc_set_alignment(GTK_MISC(self), 0.0, 0.5);
@@ -208,7 +211,7 @@ mn_system_mailbox_properties_init (MNSystemMailboxProperties * self G_GNUC_UNUSE
else
gtk_label_set_text(GTK_LABEL(self), _("The location of your system mailbox could not be detected. Please set the MAIL environment variable."));
-#line 212 "mn-system-mailbox-properties.c"
+#line 215 "mn-system-mailbox-properties.c"
}
}
#undef __GOB_FUNCTION__
@@ -227,9 +230,9 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_SIZE_GROUP:
{
-#line 35 "mn-system-mailbox-properties.gob"
+#line 37 "mn-system-mailbox-properties.gob"
{ GObject *___old = (GObject *)self->_priv->size_group; self->_priv->size_group = (void *)g_value_dup_object (VAL); if (___old != NULL) { g_object_unref (G_OBJECT (___old)); } }
-#line 233 "mn-system-mailbox-properties.c"
+#line 236 "mn-system-mailbox-properties.c"
}
break;
default:
@@ -258,23 +261,23 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_LABEL:
{
-#line 32 "mn-system-mailbox-properties.gob"
+#line 34 "mn-system-mailbox-properties.gob"
g_value_set_string(VAL, _("System Mailbox"));
-#line 264 "mn-system-mailbox-properties.c"
+#line 267 "mn-system-mailbox-properties.c"
}
break;
case PROP_SIZE_GROUP:
{
-#line 35 "mn-system-mailbox-properties.gob"
+#line 37 "mn-system-mailbox-properties.gob"
g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 271 "mn-system-mailbox-properties.c"
+#line 274 "mn-system-mailbox-properties.c"
}
break;
case PROP_COMPLETE:
{
-#line 38 "mn-system-mailbox-properties.gob"
+#line 40 "mn-system-mailbox-properties.gob"
g_value_set_boolean(VAL, selfp->system_uri != NULL);
-#line 278 "mn-system-mailbox-properties.c"
+#line 281 "mn-system-mailbox-properties.c"
}
break;
default:
@@ -291,42 +294,42 @@ g_value_set_object (VAL, (gpointer)self->_priv->size_group);
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
static gboolean
mn_system_mailbox_properties_set_uri (MNMailboxProperties * self, MNURI * uri)
-#line 298 "mn-system-mailbox-properties.c"
+#line 301 "mn-system-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::set_uri"
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (gboolean )0);
-#line 65 "mn-system-mailbox-properties.gob"
+#line 67 "mn-system-mailbox-properties.gob"
g_return_val_if_fail (uri != NULL, (gboolean )0);
-#line 307 "mn-system-mailbox-properties.c"
+#line 310 "mn-system-mailbox-properties.c"
{
-#line 68 "mn-system-mailbox-properties.gob"
+#line 70 "mn-system-mailbox-properties.gob"
return MN_URI_IS_SYSTEM_MAILBOX(uri);
}}
-#line 313 "mn-system-mailbox-properties.c"
+#line 316 "mn-system-mailbox-properties.c"
#undef __GOB_FUNCTION__
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
static MNURI *
mn_system_mailbox_properties_get_uri (MNMailboxProperties * self)
-#line 319 "mn-system-mailbox-properties.c"
+#line 322 "mn-system-mailbox-properties.c"
{
#define __GOB_FUNCTION__ "MN:System:Mailbox:Properties::get_uri"
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
g_return_val_if_fail (self != NULL, (MNURI * )0);
-#line 72 "mn-system-mailbox-properties.gob"
+#line 74 "mn-system-mailbox-properties.gob"
g_return_val_if_fail (MN_IS_MAILBOX_PROPERTIES (self), (MNURI * )0);
-#line 326 "mn-system-mailbox-properties.c"
+#line 329 "mn-system-mailbox-properties.c"
{
-#line 74 "mn-system-mailbox-properties.gob"
+#line 76 "mn-system-mailbox-properties.gob"
return mn_uri_new(SELF(self)->_priv->system_uri);
}}
-#line 332 "mn-system-mailbox-properties.c"
+#line 335 "mn-system-mailbox-properties.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-system-mailbox-properties.gob b/src/mn-system-mailbox-properties.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <gtk/gtk.h>
%}
diff --git a/src/mn-system-mailbox-properties.h b/src/mn-system-mailbox-properties.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-unsupported-mailbox-private.h b/src/mn-unsupported-mailbox-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_UNSUPPORTED_MAILBOX_PRIVATE_H__
#define __MN_UNSUPPORTED_MAILBOX_PRIVATE_H__
@@ -10,7 +10,7 @@ extern "C" {
#endif /* __cplusplus */
struct _MNUnsupportedMailboxPrivate {
-#line 30 "mn-unsupported-mailbox.gob"
+#line 32 "mn-unsupported-mailbox.gob"
char * reason;
#line 16 "mn-unsupported-mailbox-private.h"
};
diff --git a/src/mn-unsupported-mailbox.c b/src/mn-unsupported-mailbox.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:54 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -23,7 +23,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 22 "mn-unsupported-mailbox.gob"
+#line 24 "mn-unsupported-mailbox.gob"
#include "config.h"
#include <glib/gi18n-lib.h>
@@ -107,14 +107,13 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::finalize"
- MNUnsupportedMailbox *self G_GNUC_UNUSED = MN_UNSUPPORTED_MAILBOX (obj_self);
- gpointer priv = self->_priv;
+ MNUnsupportedMailbox *self G_GNUC_UNUSED = MN_UNSUPPORTED_MAILBOX (obj_self);
+ gpointer priv G_GNUC_UNUSED = self->_priv;
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 30 "mn-unsupported-mailbox.gob"
- if(self->_priv->reason) { ((*(void (*)(void *))g_free)) (self->_priv->reason); self->_priv->reason = NULL; }
+#line 32 "mn-unsupported-mailbox.gob"
+ if(self->_priv->reason) { g_free ((gpointer) self->_priv->reason); self->_priv->reason = NULL; }
#line 117 "mn-unsupported-mailbox.c"
- g_free (priv);
}
#undef __GOB_FUNCTION__
@@ -122,17 +121,19 @@ static void
mn_unsupported_mailbox_init (MNUnsupportedMailbox * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::init"
- o->_priv = g_new0 (MNUnsupportedMailboxPrivate, 1);
+ o->_priv = G_TYPE_INSTANCE_GET_PRIVATE(o,TYPE_SELF,MNUnsupportedMailboxPrivate);
}
#undef __GOB_FUNCTION__
-#line 35 "mn-unsupported-mailbox.gob"
+#line 37 "mn-unsupported-mailbox.gob"
static void
mn_unsupported_mailbox_class_init (MNUnsupportedMailboxClass * class G_GNUC_UNUSED)
-#line 132 "mn-unsupported-mailbox.c"
+#line 131 "mn-unsupported-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::class_init"
GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) class;
+ g_type_class_add_private(class,sizeof(MNUnsupportedMailboxPrivate));
+
parent_class = g_type_class_ref (MN_TYPE_MAILBOX);
g_object_class->finalize = ___finalize;
@@ -152,12 +153,12 @@ mn_unsupported_mailbox_class_init (MNUnsupportedMailboxClass * class G_GNUC_UNUS
param_spec);
}
{
-#line 36 "mn-unsupported-mailbox.gob"
+#line 38 "mn-unsupported-mailbox.gob"
MN_MAILBOX_CLASS(class)->stock_id = MN_STOCK_UNSUPPORTED;
MN_MAILBOX_CLASS(class)->format = _("unsupported");
-#line 161 "mn-unsupported-mailbox.c"
+#line 162 "mn-unsupported-mailbox.c"
}
}
#undef __GOB_FUNCTION__
@@ -176,9 +177,9 @@ ___object_set_property (GObject *object,
switch (property_id) {
case PROP_REASON:
{
-#line 31 "mn-unsupported-mailbox.gob"
+#line 33 "mn-unsupported-mailbox.gob"
{ char *old = self->_priv->reason; self->_priv->reason = g_value_dup_string (VAL); g_free (old); }
-#line 182 "mn-unsupported-mailbox.c"
+#line 183 "mn-unsupported-mailbox.c"
}
break;
default:
@@ -207,9 +208,9 @@ ___object_get_property (GObject *object,
switch (property_id) {
case PROP_REASON:
{
-#line 31 "mn-unsupported-mailbox.gob"
+#line 33 "mn-unsupported-mailbox.gob"
g_value_set_string (VAL, self->_priv->reason);
-#line 213 "mn-unsupported-mailbox.c"
+#line 214 "mn-unsupported-mailbox.c"
}
break;
default:
@@ -225,44 +226,43 @@ g_value_set_string (VAL, self->_priv->reason);
#undef __GOB_FUNCTION__
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
const char *
mn_unsupported_mailbox_get_reason (MNUnsupportedMailbox * self)
-#line 232 "mn-unsupported-mailbox.c"
+#line 233 "mn-unsupported-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::get_reason"
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
g_return_val_if_fail (self != NULL, (const char * )0);
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
g_return_val_if_fail (MN_IS_UNSUPPORTED_MAILBOX (self), (const char * )0);
-#line 239 "mn-unsupported-mailbox.c"
+#line 240 "mn-unsupported-mailbox.c"
{
-#line 33 "mn-unsupported-mailbox.gob"
+#line 35 "mn-unsupported-mailbox.gob"
return selfp->reason; }}
-#line 243 "mn-unsupported-mailbox.c"
+#line 244 "mn-unsupported-mailbox.c"
#undef __GOB_FUNCTION__
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
MNMailbox *
mn_unsupported_mailbox_new (MNURI * uri, const char * reason)
-#line 250 "mn-unsupported-mailbox.c"
+#line 251 "mn-unsupported-mailbox.c"
{
#define __GOB_FUNCTION__ "MN:Unsupported:Mailbox::new"
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
g_return_val_if_fail (uri != NULL, (MNMailbox * )0);
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
g_return_val_if_fail (MN_IS_URI (uri), (MNMailbox * )0);
-#line 41 "mn-unsupported-mailbox.gob"
+#line 43 "mn-unsupported-mailbox.gob"
g_return_val_if_fail (reason != NULL, (MNMailbox * )0);
-#line 259 "mn-unsupported-mailbox.c"
+#line 260 "mn-unsupported-mailbox.c"
{
-#line 44 "mn-unsupported-mailbox.gob"
+#line 46 "mn-unsupported-mailbox.gob"
- return g_object_new(TYPE_SELF,
- MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
- MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
- NULL);
+ return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
+ MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
+ NULL));
}}
#line 268 "mn-unsupported-mailbox.c"
#undef __GOB_FUNCTION__
diff --git a/src/mn-unsupported-mailbox.gob b/src/mn-unsupported-mailbox.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include "mn-mailbox.h"
%}
@@ -42,9 +44,8 @@ class MN:Unsupported:Mailbox from MN:Mailbox
new (MN:URI *uri (check null type),
const char *reason (check null))
{
- return g_object_new(TYPE_SELF,
- MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
- MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
- NULL);
+ return MN_MAILBOX(GET_NEW_VARG(MN_MAILBOX_PROP_URI(G_OBJECT(uri)),
+ MN_UNSUPPORTED_MAILBOX_PROP_REASON((char *) reason),
+ NULL));
}
}
diff --git a/src/mn-unsupported-mailbox.h b/src/mn-unsupported-mailbox.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-uri-private.h b/src/mn-uri-private.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#ifndef __MN_URI_PRIVATE_H__
#define __MN_URI_PRIVATE_H__
diff --git a/src/mn-uri.c b/src/mn-uri.c
@@ -1,11 +1,11 @@
-/* Generated by GOB (v2.0.9) on Thu Sep 9 01:42:01 2004
+/* Generated by GOB (v2.0.10) on Wed Oct 6 19:29:54 2004
(do not edit directly) */
/* End world hunger, donate to the World Food Programme, http://www.wfp.org */
#define GOB_VERSION_MAJOR 2
#define GOB_VERSION_MINOR 0
-#define GOB_VERSION_PATCHLEVEL 9
+#define GOB_VERSION_PATCHLEVEL 10
#define selfp (self->_priv)
@@ -21,7 +21,7 @@
#define ___GOB_UNLIKELY(expr) (expr)
#endif /* G_LIKELY */
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
#include "config.h"
#include <stdio.h> /* required by stdlib.h on Darwin */
@@ -148,8 +148,8 @@ ___dispose (GObject *obj_self)
MNURI *self G_GNUC_UNUSED = MN_URI (obj_self);
if (G_OBJECT_CLASS (parent_class)->dispose) \
(* G_OBJECT_CLASS (parent_class)->dispose) (obj_self);
-#line 90 "mn-uri.gob"
- if(self->vfs) { ((*(void (*)(void *))gnome_vfs_uri_unref)) (self->vfs); self->vfs = NULL; }
+#line 92 "mn-uri.gob"
+ if(self->vfs) { gnome_vfs_uri_unref ((gpointer) self->vfs); self->vfs = NULL; }
#line 154 "mn-uri.c"
}
#undef __GOB_FUNCTION__
@@ -159,35 +159,35 @@ static void
___finalize(GObject *obj_self)
{
#define __GOB_FUNCTION__ "MN:URI::finalize"
- MNURI *self G_GNUC_UNUSED = MN_URI (obj_self);
+ MNURI *self G_GNUC_UNUSED = MN_URI (obj_self);
if(G_OBJECT_CLASS(parent_class)->finalize) \
(* G_OBJECT_CLASS(parent_class)->finalize)(obj_self);
-#line 89 "mn-uri.gob"
- if(self->text) { ((*(void (*)(void *))g_free)) (self->text); self->text = NULL; }
-#line 168 "mn-uri.c"
#line 91 "mn-uri.gob"
- if(self->human_readable) { ((*(void (*)(void *))g_free)) (self->human_readable); self->human_readable = NULL; }
-#line 171 "mn-uri.c"
+ if(self->text) { g_free ((gpointer) self->text); self->text = NULL; }
+#line 168 "mn-uri.c"
#line 93 "mn-uri.gob"
- if(self->scheme) { ((*(void (*)(void *))g_free)) (self->scheme); self->scheme = NULL; }
+ if(self->human_readable) { g_free ((gpointer) self->human_readable); self->human_readable = NULL; }
+#line 171 "mn-uri.c"
+#line 95 "mn-uri.gob"
+ if(self->scheme) { g_free ((gpointer) self->scheme); self->scheme = NULL; }
#line 174 "mn-uri.c"
-#line 94 "mn-uri.gob"
- if(self->username) { ((*(void (*)(void *))g_free)) (self->username); self->username = NULL; }
+#line 96 "mn-uri.gob"
+ if(self->username) { g_free ((gpointer) self->username); self->username = NULL; }
#line 177 "mn-uri.c"
-#line 95 "mn-uri.gob"
- if(self->password) { ((*(void (*)(void *))g_free)) (self->password); self->password = NULL; }
+#line 97 "mn-uri.gob"
+ if(self->password) { g_free ((gpointer) self->password); self->password = NULL; }
#line 180 "mn-uri.c"
-#line 96 "mn-uri.gob"
- if(self->authmech) { ((*(void (*)(void *))g_free)) (self->authmech); self->authmech = NULL; }
+#line 98 "mn-uri.gob"
+ if(self->authmech) { g_free ((gpointer) self->authmech); self->authmech = NULL; }
#line 183 "mn-uri.c"
-#line 97 "mn-uri.gob"
- if(self->hostname) { ((*(void (*)(void *))g_free)) (self->hostname); self->hostname = NULL; }
-#line 186 "mn-uri.c"
#line 99 "mn-uri.gob"
- if(self->path) { ((*(void (*)(void *))g_free)) (self->path); self->path = NULL; }
+ if(self->hostname) { g_free ((gpointer) self->hostname); self->hostname = NULL; }
+#line 186 "mn-uri.c"
+#line 101 "mn-uri.gob"
+ if(self->path) { g_free ((gpointer) self->path); self->path = NULL; }
#line 189 "mn-uri.c"
-#line 100 "mn-uri.gob"
- if(self->queries) { ((*(void (*)(void *))g_strfreev)) (self->queries); self->queries = NULL; }
+#line 102 "mn-uri.gob"
+ if(self->queries) { g_strfreev ((gpointer) self->queries); self->queries = NULL; }
#line 192 "mn-uri.c"
}
#undef __GOB_FUNCTION__
@@ -196,43 +196,43 @@ static void
mn_uri_init (MNURI * o G_GNUC_UNUSED)
{
#define __GOB_FUNCTION__ "MN:URI::init"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->text = NULL;
#line 202 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->vfs = NULL;
#line 205 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->human_readable = NULL;
#line 208 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->scheme = NULL;
#line 211 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->username = NULL;
#line 214 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->password = NULL;
#line 217 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->authmech = NULL;
#line 220 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->hostname = NULL;
#line 223 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->port = -1;
#line 226 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->path = NULL;
#line 229 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->queries = NULL;
#line 232 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->type = MN_URI_UNKNOWN;
#line 235 "mn-uri.c"
-#line 52 "mn-uri.gob"
+#line 54 "mn-uri.gob"
o->flags = 0;
#line 238 "mn-uri.c"
}
@@ -252,14 +252,14 @@ mn_uri_class_init (MNURIClass * c G_GNUC_UNUSED)
-#line 105 "mn-uri.gob"
+#line 107 "mn-uri.gob"
static gboolean
mn_uri_is_ipv6_address (const char * hostname)
#line 259 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::is_ipv6_address"
{
-#line 107 "mn-uri.gob"
+#line 109 "mn-uri.gob"
char dummy[16]; /* sizeof(struct in6_addr) */
@@ -270,35 +270,35 @@ mn_uri_is_ipv6_address (const char * hostname)
#line 271 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
gboolean
mn_uri_has_query (MNURI * self, const char * query)
#line 277 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::has_query"
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
g_return_val_if_fail (self != NULL, (gboolean )0);
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
g_return_val_if_fail (MN_IS_URI (self), (gboolean )0);
-#line 115 "mn-uri.gob"
+#line 117 "mn-uri.gob"
g_return_val_if_fail (query != NULL, (gboolean )0);
#line 286 "mn-uri.c"
{
-#line 117 "mn-uri.gob"
+#line 119 "mn-uri.gob"
return self->queries && eel_g_strv_find(self->queries, query) != -1;
}}
#line 292 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 121 "mn-uri.gob"
+#line 123 "mn-uri.gob"
const char *
mn_uri_get_system_mailbox (void)
#line 298 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::get_system_mailbox"
{
-#line 123 "mn-uri.gob"
+#line 125 "mn-uri.gob"
static char *global_uri = NULL;
G_LOCK_DEFINE_STATIC(global_uri);
@@ -319,14 +319,14 @@ mn_uri_get_system_mailbox (void)
#line 320 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 141 "mn-uri.gob"
+#line 143 "mn-uri.gob"
static const SchemeInfo *
mn_uri_get_scheme_info (const char * scheme)
#line 326 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::get_scheme_info"
{
-#line 143 "mn-uri.gob"
+#line 145 "mn-uri.gob"
int i;
@@ -339,17 +339,17 @@ mn_uri_get_scheme_info (const char * scheme)
#line 340 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 153 "mn-uri.gob"
+#line 155 "mn-uri.gob"
int
mn_uri_get_default_port (const char * scheme)
#line 346 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::get_default_port"
-#line 153 "mn-uri.gob"
+#line 155 "mn-uri.gob"
g_return_val_if_fail (scheme != NULL, (int )0);
#line 351 "mn-uri.c"
{
-#line 155 "mn-uri.gob"
+#line 157 "mn-uri.gob"
const SchemeInfo *scheme_info;
@@ -359,17 +359,17 @@ mn_uri_get_default_port (const char * scheme)
#line 360 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 162 "mn-uri.gob"
+#line 164 "mn-uri.gob"
const char *
mn_uri_get_default_path (const char * scheme)
#line 366 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::get_default_path"
-#line 162 "mn-uri.gob"
+#line 164 "mn-uri.gob"
g_return_val_if_fail (scheme != NULL, (const char * )0);
#line 371 "mn-uri.c"
{
-#line 164 "mn-uri.gob"
+#line 166 "mn-uri.gob"
const SchemeInfo *scheme_info;
@@ -379,19 +379,19 @@ mn_uri_get_default_path (const char * scheme)
#line 380 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 171 "mn-uri.gob"
+#line 173 "mn-uri.gob"
static void
mn_uri_parse (MNURI * self)
#line 386 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::parse"
-#line 171 "mn-uri.gob"
+#line 173 "mn-uri.gob"
g_return_if_fail (self != NULL);
-#line 171 "mn-uri.gob"
+#line 173 "mn-uri.gob"
g_return_if_fail (MN_IS_URI (self));
#line 393 "mn-uri.c"
{
-#line 173 "mn-uri.gob"
+#line 175 "mn-uri.gob"
int len;
int buflen;
@@ -525,19 +525,19 @@ mn_uri_parse (MNURI * self)
#line 526 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 304 "mn-uri.gob"
+#line 306 "mn-uri.gob"
static void
mn_uri_build (MNURI * self)
#line 532 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::build"
-#line 304 "mn-uri.gob"
+#line 306 "mn-uri.gob"
g_return_if_fail (self != NULL);
-#line 304 "mn-uri.gob"
+#line 306 "mn-uri.gob"
g_return_if_fail (MN_IS_URI (self));
#line 539 "mn-uri.c"
{
-#line 306 "mn-uri.gob"
+#line 308 "mn-uri.gob"
char *canonical = NULL;
@@ -619,19 +619,19 @@ mn_uri_build (MNURI * self)
#line 620 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 385 "mn-uri.gob"
+#line 387 "mn-uri.gob"
static void
mn_uri_set_human_readable (MNURI * self)
#line 626 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::set_human_readable"
-#line 385 "mn-uri.gob"
+#line 387 "mn-uri.gob"
g_return_if_fail (self != NULL);
-#line 385 "mn-uri.gob"
+#line 387 "mn-uri.gob"
g_return_if_fail (MN_IS_URI (self));
#line 633 "mn-uri.c"
{
-#line 387 "mn-uri.gob"
+#line 389 "mn-uri.gob"
g_return_if_fail(self->human_readable == NULL);
@@ -660,19 +660,19 @@ mn_uri_set_human_readable (MNURI * self)
#line 661 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 413 "mn-uri.gob"
+#line 415 "mn-uri.gob"
static void
mn_uri_post_init (MNURI * self)
#line 667 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::post_init"
-#line 413 "mn-uri.gob"
+#line 415 "mn-uri.gob"
g_return_if_fail (self != NULL);
-#line 413 "mn-uri.gob"
+#line 415 "mn-uri.gob"
g_return_if_fail (MN_IS_URI (self));
#line 674 "mn-uri.c"
{
-#line 415 "mn-uri.gob"
+#line 417 "mn-uri.gob"
const char *system_uri;
@@ -710,17 +710,17 @@ mn_uri_post_init (MNURI * self)
#line 711 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 450 "mn-uri.gob"
+#line 452 "mn-uri.gob"
MNURI *
mn_uri_new (const char * text_uri)
#line 717 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::new"
-#line 450 "mn-uri.gob"
+#line 452 "mn-uri.gob"
g_return_val_if_fail (text_uri != NULL, (MNURI * )0);
#line 722 "mn-uri.c"
{
-#line 452 "mn-uri.gob"
+#line 454 "mn-uri.gob"
Self *self;
char *scheme;
@@ -742,21 +742,21 @@ mn_uri_new (const char * text_uri)
#line 743 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
MNURI *
mn_uri_new_pop (gboolean ssl, gboolean stls, const char * username, const char * password, const char * authmech, const char * hostname, int port)
#line 749 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::new_pop"
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
g_return_val_if_fail (username != NULL, (MNURI * )0);
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
g_return_val_if_fail (password != NULL, (MNURI * )0);
-#line 471 "mn-uri.gob"
+#line 473 "mn-uri.gob"
g_return_val_if_fail (hostname != NULL, (MNURI * )0);
#line 758 "mn-uri.c"
{
-#line 479 "mn-uri.gob"
+#line 481 "mn-uri.gob"
Self *self;
@@ -777,23 +777,23 @@ mn_uri_new_pop (gboolean ssl, gboolean stls, const char * username, const char *
#line 778 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
MNURI *
mn_uri_new_imap (gboolean ssl, gboolean starttls, const char * username, const char * password, const char * authmech, const char * hostname, int port, const char * mailbox)
#line 784 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::new_imap"
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
g_return_val_if_fail (username != NULL, (MNURI * )0);
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
g_return_val_if_fail (password != NULL, (MNURI * )0);
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
g_return_val_if_fail (hostname != NULL, (MNURI * )0);
-#line 497 "mn-uri.gob"
+#line 499 "mn-uri.gob"
g_return_val_if_fail (mailbox != NULL, (MNURI * )0);
#line 795 "mn-uri.c"
{
-#line 506 "mn-uri.gob"
+#line 508 "mn-uri.gob"
Self *self;
@@ -815,19 +815,19 @@ mn_uri_new_imap (gboolean ssl, gboolean starttls, const char * username, const c
#line 816 "mn-uri.c"
#undef __GOB_FUNCTION__
-#line 525 "mn-uri.gob"
+#line 527 "mn-uri.gob"
MNURI *
mn_uri_new_gmail (const char * username, const char * password)
#line 822 "mn-uri.c"
{
#define __GOB_FUNCTION__ "MN:URI::new_gmail"
-#line 525 "mn-uri.gob"
+#line 527 "mn-uri.gob"
g_return_val_if_fail (username != NULL, (MNURI * )0);
-#line 525 "mn-uri.gob"
+#line 527 "mn-uri.gob"
g_return_val_if_fail (password != NULL, (MNURI * )0);
#line 829 "mn-uri.c"
{
-#line 528 "mn-uri.gob"
+#line 530 "mn-uri.gob"
Self *self;
diff --git a/src/mn-uri.gob b/src/mn-uri.gob
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+requires 2.0.10
+
%headertop{
#include <libgnomevfs/gnome-vfs.h>
%}
diff --git a/src/mn-uri.h b/src/mn-uri.h
@@ -1,4 +1,4 @@
-/* Generated by GOB (v2.0.9) (do not edit directly) */
+/* Generated by GOB (v2.0.10) (do not edit directly) */
#include <glib.h>
#include <glib-object.h>
diff --git a/src/mn-util.c b/src/mn-util.c
@@ -20,6 +20,8 @@
#include <string.h>
#include <stdarg.h>
#include <stdlib.h>
+#include <time.h>
+#include <errno.h>
#include <gnome.h>
#include <glade/glade.h>
#include <eel/eel.h>
@@ -36,6 +38,12 @@ enum {
TARGET_MOZ_URL
};
+typedef struct
+{
+ gpointer instance;
+ unsigned long id;
+} SignalHandler;
+
/*** functions ***************************************************************/
static int mn_g_str_slist_compare_func (gconstpointer a, gconstpointer b);
@@ -57,6 +65,19 @@ static void mn_drag_data_received_h (GtkWidget *widget,
static GtkWidget *mn_menu_item_new (const char *stock_id, const char *mnemonic);
+static void mn_error_dialog_real (GtkWindow *parent,
+ gboolean blocking,
+ const char *not_again_key,
+ const char *help_link_id,
+ const char *primary,
+ const char *secondary);
+static void mn_error_dialog_real_response_h (GtkDialog *dialog,
+ int response,
+ gpointer user_data);
+
+static void mn_g_object_connect_weak_notify_cb (gpointer data,
+ GObject *former_object);
+
/*** implementation **********************************************************/
void
@@ -127,6 +148,19 @@ mn_g_str_slist_compare_func (gconstpointer a, gconstpointer b)
return strcmp(a, b);
}
+GSList *
+mn_g_object_slist_ref (GSList *list)
+{
+ g_slist_foreach(list, (GFunc) g_object_ref, NULL);
+ return list;
+}
+
+GSList *
+mn_g_object_slist_copy (GSList *list)
+{
+ return g_slist_copy(mn_g_object_slist_ref(list));
+}
+
/**
* mn_g_object_slist_free:
* @list: a #GSList of #GObject instances
@@ -234,7 +268,7 @@ mn_create_interface (const char *name, ...)
*widget = glade_xml_get_widget(xml, widget_name);
if (! *widget)
- g_critical(_("widget %s not found in interface %s"), widget_name, name);
+ g_critical(_("widget \"%s\" not found in interface \"%s\""), widget_name, name);
}
va_end(args);
@@ -263,14 +297,10 @@ mn_file_chooser_dialog_allow_select_folder (GtkFileChooserDialog *dialog,
|| accept_id == GTK_RESPONSE_YES
|| accept_id == GTK_RESPONSE_APPLY));
- g_signal_connect(G_OBJECT(dialog),
- "file-activated",
- G_CALLBACK(mn_file_chooser_dialog_file_activated_h),
- GINT_TO_POINTER(accept_id));
- g_signal_connect(G_OBJECT(dialog),
- "response",
- G_CALLBACK(mn_file_chooser_dialog_response_h),
- GINT_TO_POINTER(accept_id));
+ g_object_connect(dialog,
+ "signal::file-activated", mn_file_chooser_dialog_file_activated_h, GINT_TO_POINTER(accept_id),
+ "signal::response", mn_file_chooser_dialog_response_h, GINT_TO_POINTER(accept_id),
+ NULL);
}
static void
@@ -323,7 +353,7 @@ mn_setup_dnd (GtkWidget *widget)
targets,
G_N_ELEMENTS(targets),
GDK_ACTION_COPY);
- g_signal_connect(G_OBJECT(widget),
+ g_signal_connect(widget,
"drag-data-received",
G_CALLBACK(mn_drag_data_received_h),
NULL);
@@ -475,13 +505,13 @@ mn_parse_gnome_copied_files (const char *gnome_copied_files,
}
void
-mn_display_help (const char *link_id)
+mn_display_help (GtkWindow *parent, const char *link_id)
{
GError *err = NULL;
if (! gnome_help_display("mail-notification.xml", link_id, &err))
{
- mn_error_dialog(NULL, _("Unable to display help"), "%s", err->message);
+ mn_error_dialog(parent, NULL, _("Unable to display help"), "%s", err->message);
g_error_free(err);
}
}
@@ -495,7 +525,7 @@ mn_thread_create (GThreadFunc func, gpointer data)
if (! g_thread_create(func, data, FALSE, &err))
{
- mn_fatal_error_dialog(_("Unable to create a thread: %s."), err->message);
+ mn_fatal_error_dialog(NULL, _("Unable to create a thread: %s."), err->message);
g_error_free(err);
}
}
@@ -648,25 +678,17 @@ mn_menu_item_new (const char *stock_id, const char *mnemonic)
return item;
}
-void
-mn_error_dialog (const char *help_link_id,
- const char *primary,
- const char *format,
- ...)
+static void
+mn_error_dialog_real (GtkWindow *parent,
+ gboolean blocking,
+ const char *not_again_key,
+ const char *help_link_id,
+ const char *primary,
+ const char *secondary)
{
GtkWidget *dialog;
- char *secondary = NULL;
-
- if (format)
- {
- va_list args;
-
- va_start(args, format);
- secondary = g_strdup_vprintf(format, args);
- va_end(args);
- }
- dialog = eel_alert_dialog_new(NULL,
+ dialog = eel_alert_dialog_new(parent,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_NONE,
@@ -674,20 +696,86 @@ mn_error_dialog (const char *help_link_id,
secondary,
NULL);
+ if (not_again_key)
+ {
+ GtkWidget *alignment;
+ GtkWidget *check;
+
+ alignment = gtk_alignment_new(0.5, 0.5, 0, 0);
+ check = gtk_check_button_new_with_mnemonic(_("_Do not show this message again"));
+
+ gtk_container_add(GTK_CONTAINER(alignment), check);
+ gtk_widget_show_all(alignment);
+
+ gtk_box_pack_end(GTK_BOX(GTK_DIALOG(dialog)->vbox), alignment, FALSE, FALSE, 0);
+
+ mn_conf_link(check, not_again_key, NULL);
+ }
+
if (help_link_id != NULL)
gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_HELP, GTK_RESPONSE_HELP);
gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_OK, GTK_RESPONSE_OK);
gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_OK);
- while (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_HELP)
- mn_display_help(help_link_id);
+ if (blocking)
+ {
+ while (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_HELP)
+ mn_display_help(GTK_WINDOW(dialog), help_link_id);
+ gtk_widget_destroy(dialog);
+ }
+ else
+ {
+ g_signal_connect_data(dialog,
+ "response",
+ G_CALLBACK(mn_error_dialog_real_response_h),
+ g_strdup(help_link_id),
+ (GClosureNotify) g_free,
+ 0);
+ gtk_widget_show(dialog);
+ }
+}
+
+static void
+mn_error_dialog_real_response_h (GtkDialog *dialog,
+ int response,
+ gpointer user_data)
+{
+ char *help_link_id = user_data;
+
+ if (response == GTK_RESPONSE_HELP)
+ mn_display_help(GTK_WINDOW(dialog), help_link_id);
+ else
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+void
+mn_error_dialog (GtkWindow *parent,
+ const char *not_again_key,
+ const char *help_link_id,
+ const char *primary,
+ const char *format,
+ ...)
+{
+ char *secondary;
+
+ if (format)
+ {
+ va_list args;
+
+ va_start(args, format);
+ secondary = g_strdup_vprintf(format, args);
+ va_end(args);
+ }
+ else
+ secondary = NULL;
- gtk_widget_destroy(dialog);
+ mn_error_dialog_real(parent, FALSE, not_again_key, help_link_id, primary, secondary);
+ g_free(secondary);
}
void
-mn_fatal_error_dialog (const char *format, ...)
+mn_fatal_error_dialog (GtkWindow *parent, const char *format, ...)
{
va_list args;
char *secondary;
@@ -698,8 +786,125 @@ mn_fatal_error_dialog (const char *format, ...)
secondary = g_strdup_vprintf(format, args);
va_end(args);
- mn_error_dialog(NULL, _("A fatal error has occurred in Mail Notification"), "%s", secondary);
+ mn_error_dialog_real(parent, TRUE, NULL, NULL, _("A fatal error has occurred in Mail Notification"), secondary);
g_free(secondary);
exit(1);
}
+
+time_t
+mn_time (void)
+{
+ time_t t;
+
+ t = time(NULL);
+ if (t < 0)
+ {
+ t = 0;
+ g_warning(_("unable to get current time: %s"), g_strerror(errno));
+ }
+
+ return t;
+}
+
+GType
+mn_position_get_type (void)
+{
+ static GType type = 0;
+
+ if (type == 0)
+ {
+ static const GEnumValue values[] = {
+ { MN_POSITION_TOP_LEFT, "MN_POSITION_TOP_LEFT", "top-left" },
+ { MN_POSITION_TOP_RIGHT, "MN_POSITION_TOP_RIGHT", "top-right" },
+ { MN_POSITION_BOTTOM_LEFT, "MN_POSITION_BOTTOM_LEFT", "bottom-left" },
+ { MN_POSITION_BOTTOM_RIGHT, "MN_POSITION_BOTTOM_RIGHT", "bottom-right" },
+ { 0, NULL, NULL }
+ };
+
+ type = g_enum_register_static("MNPosition", values);
+ }
+
+ return type;
+}
+
+/**
+ * mn_g_object_connect:
+ * @object: the object to associate the handlers with
+ * @instance: the instance to connect to
+ * @signal_spec: the spec for the first signal
+ * @...: #GCallback for the first signal, followed by data for the
+ * first signal, followed optionally by more signal spec/callback/data
+ * triples, followed by NULL
+ *
+ * Connects to one or more signals of @instance, associating the
+ * handlers with @object. The handlers will be disconnected whenever
+ * @object is finalized.
+ *
+ * Note: this function is not thread-safe. If @object and @instance
+ * are finalized concurrently, the behaviour is undefined.
+ *
+ * The signals specs must be in the same format than those passed to
+ * g_object_connect(), except that object-signal,
+ * swapped-object-signal, object-signal-after and
+ * swapped-object-signal-after are not accepted.
+ *
+ * Return value: @object
+ **/
+gpointer
+mn_g_object_connect (gpointer object,
+ gpointer instance,
+ const char *signal_spec,
+ ...)
+{
+ va_list args;
+
+ g_return_val_if_fail(G_IS_OBJECT(object), NULL);
+ g_return_val_if_fail(G_IS_OBJECT(instance), NULL);
+
+ va_start(args, signal_spec);
+ while (signal_spec)
+ {
+ GCallback callback = va_arg(args, GCallback);
+ gpointer data = va_arg(args, gpointer);
+ SignalHandler *handler;
+
+ handler = g_new(SignalHandler, 1);
+ handler->instance = instance;
+
+ if (! strncmp(signal_spec, "signal::", 8))
+ handler->id = g_signal_connect(instance, signal_spec + 8, callback, data);
+ else if (! strncmp(signal_spec, "swapped_signal", 16)
+ || ! strncmp(signal_spec, "swapped-signal", 16))
+ handler->id = g_signal_connect_swapped(instance, signal_spec + 16, callback, data);
+ else if (! strncmp(signal_spec, "signal_after::", 14)
+ || ! strncmp(signal_spec, "signal-after::", 14))
+ handler->id = g_signal_connect_after(instance, signal_spec + 14, callback, data);
+ else if (! strncmp(signal_spec, "swapped_signal_after::", 22)
+ || ! strncmp(signal_spec, "swapped-signal-after::", 22))
+ handler->id = g_signal_connect_data(instance, signal_spec + 22, callback, data, NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED);
+ else
+ g_critical(_("invalid signal specification \"%s\""), signal_spec);
+
+ eel_add_weak_pointer(&handler->instance);
+ g_object_weak_ref(object, mn_g_object_connect_weak_notify_cb, handler);
+
+ signal_spec = va_arg(args, const char *);
+ }
+ va_end(args);
+
+ return object;
+}
+
+static void
+mn_g_object_connect_weak_notify_cb (gpointer data, GObject *former_object)
+{
+ SignalHandler *handler = data;
+
+ if (handler->instance)
+ {
+ g_signal_handler_disconnect(handler->instance, handler->id);
+ eel_remove_weak_pointer(&handler->instance);
+ }
+ g_free(handler);
+}
diff --git a/src/mn-util.h b/src/mn-util.h
@@ -21,6 +21,7 @@
#include "config.h"
#include <stdarg.h>
+#include <time.h>
#include <gtk/gtk.h>
#define MN_LIST_FOREACH(var, head) \
@@ -29,7 +30,7 @@ for ((var) = (head); \
(var) = (var)->next)
void mn_info (const char *format,
- ...);
+ ...) G_GNUC_PRINTF(1, 2);
GSList *mn_g_slist_delete_link_deep (GSList *list,
GSList *link_);
@@ -41,6 +42,8 @@ GSList *mn_g_slist_delete_link_deep_custom (GSList *list,
GSList *mn_g_str_slist_find (GSList *list,
const char *str);
+GSList *mn_g_object_slist_ref (GSList *list);
+GSList *mn_g_object_slist_copy (GSList *list);
void mn_g_object_slist_free (GSList *list);
GSList *mn_g_object_slist_delete_link (GSList *list,
GSList *link_);
@@ -68,7 +71,8 @@ gboolean mn_parse_gnome_copied_files (const char *gnome_copied_files,
MNGnomeCopiedFilesType *type,
GSList **uri_list);
-void mn_display_help (const char *link_id);
+void mn_display_help (GtkWindow *parent,
+ const char *link_id);
void mn_thread_create (GThreadFunc func,
gpointer data);
@@ -86,11 +90,32 @@ GtkWidget *mn_menu_shell_prepend (GtkMenuShell *shell,
const char *stock_id,
const char *mnemonic);
-void mn_error_dialog (const char *help_link_id,
+void mn_error_dialog (GtkWindow *parent,
+ const char *not_again_key,
+ const char *help_link_id,
const char *primary,
const char *format,
- ...);
-void mn_fatal_error_dialog (const char *format,
+ ...) G_GNUC_PRINTF(5, 6);
+void mn_fatal_error_dialog (GtkWindow *parent,
+ const char *format,
+ ...) G_GNUC_PRINTF(2, 3);
+
+time_t mn_time (void);
+
+typedef enum
+{
+ MN_POSITION_TOP_LEFT,
+ MN_POSITION_TOP_RIGHT,
+ MN_POSITION_BOTTOM_LEFT,
+ MN_POSITION_BOTTOM_RIGHT
+} MNPosition;
+
+GType mn_position_get_type (void);
+#define MN_TYPE_POSITION (mn_position_get_type())
+
+gpointer mn_g_object_connect (gpointer object,
+ gpointer instance,
+ const char *signal_spec,
...);
#endif /* _MN_UTIL_H */
diff --git a/src/xhtml-lat1.ent b/src/xhtml-lat1.ent
@@ -0,0 +1,196 @@
+<!-- Portions (C) International Organization for Standardization 1986
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLlat1 PUBLIC
+ "-//W3C//ENTITIES Latin 1 for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
+ %HTMLlat1;
+-->
+
+<!ENTITY nbsp " "> <!-- no-break space = non-breaking space,
+ U+00A0 ISOnum -->
+<!ENTITY iexcl "¡"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
+<!ENTITY cent "¢"> <!-- cent sign, U+00A2 ISOnum -->
+<!ENTITY pound "£"> <!-- pound sign, U+00A3 ISOnum -->
+<!ENTITY curren "¤"> <!-- currency sign, U+00A4 ISOnum -->
+<!ENTITY yen "¥"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
+<!ENTITY brvbar "¦"> <!-- broken bar = broken vertical bar,
+ U+00A6 ISOnum -->
+<!ENTITY sect "§"> <!-- section sign, U+00A7 ISOnum -->
+<!ENTITY uml "¨"> <!-- diaeresis = spacing diaeresis,
+ U+00A8 ISOdia -->
+<!ENTITY copy "©"> <!-- copyright sign, U+00A9 ISOnum -->
+<!ENTITY ordf "ª"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
+<!ENTITY laquo "«"> <!-- left-pointing double angle quotation mark
+ = left pointing guillemet, U+00AB ISOnum -->
+<!ENTITY not "¬"> <!-- not sign = discretionary hyphen,
+ U+00AC ISOnum -->
+<!ENTITY shy "­"> <!-- soft hyphen = discretionary hyphen,
+ U+00AD ISOnum -->
+<!ENTITY reg "®"> <!-- registered sign = registered trade mark sign,
+ U+00AE ISOnum -->
+<!ENTITY macr "¯"> <!-- macron = spacing macron = overline
+ = APL overbar, U+00AF ISOdia -->
+<!ENTITY deg "°"> <!-- degree sign, U+00B0 ISOnum -->
+<!ENTITY plusmn "±"> <!-- plus-minus sign = plus-or-minus sign,
+ U+00B1 ISOnum -->
+<!ENTITY sup2 "²"> <!-- superscript two = superscript digit two
+ = squared, U+00B2 ISOnum -->
+<!ENTITY sup3 "³"> <!-- superscript three = superscript digit three
+ = cubed, U+00B3 ISOnum -->
+<!ENTITY acute "´"> <!-- acute accent = spacing acute,
+ U+00B4 ISOdia -->
+<!ENTITY micro "µ"> <!-- micro sign, U+00B5 ISOnum -->
+<!ENTITY para "¶"> <!-- pilcrow sign = paragraph sign,
+ U+00B6 ISOnum -->
+<!ENTITY middot "·"> <!-- middle dot = Georgian comma
+ = Greek middle dot, U+00B7 ISOnum -->
+<!ENTITY cedil "¸"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
+<!ENTITY sup1 "¹"> <!-- superscript one = superscript digit one,
+ U+00B9 ISOnum -->
+<!ENTITY ordm "º"> <!-- masculine ordinal indicator,
+ U+00BA ISOnum -->
+<!ENTITY raquo "»"> <!-- right-pointing double angle quotation mark
+ = right pointing guillemet, U+00BB ISOnum -->
+<!ENTITY frac14 "¼"> <!-- vulgar fraction one quarter
+ = fraction one quarter, U+00BC ISOnum -->
+<!ENTITY frac12 "½"> <!-- vulgar fraction one half
+ = fraction one half, U+00BD ISOnum -->
+<!ENTITY frac34 "¾"> <!-- vulgar fraction three quarters
+ = fraction three quarters, U+00BE ISOnum -->
+<!ENTITY iquest "¿"> <!-- inverted question mark
+ = turned question mark, U+00BF ISOnum -->
+<!ENTITY Agrave "À"> <!-- latin capital letter A with grave
+ = latin capital letter A grave,
+ U+00C0 ISOlat1 -->
+<!ENTITY Aacute "Á"> <!-- latin capital letter A with acute,
+ U+00C1 ISOlat1 -->
+<!ENTITY Acirc "Â"> <!-- latin capital letter A with circumflex,
+ U+00C2 ISOlat1 -->
+<!ENTITY Atilde "Ã"> <!-- latin capital letter A with tilde,
+ U+00C3 ISOlat1 -->
+<!ENTITY Auml "Ä"> <!-- latin capital letter A with diaeresis,
+ U+00C4 ISOlat1 -->
+<!ENTITY Aring "Å"> <!-- latin capital letter A with ring above
+ = latin capital letter A ring,
+ U+00C5 ISOlat1 -->
+<!ENTITY AElig "Æ"> <!-- latin capital letter AE
+ = latin capital ligature AE,
+ U+00C6 ISOlat1 -->
+<!ENTITY Ccedil "Ç"> <!-- latin capital letter C with cedilla,
+ U+00C7 ISOlat1 -->
+<!ENTITY Egrave "È"> <!-- latin capital letter E with grave,
+ U+00C8 ISOlat1 -->
+<!ENTITY Eacute "É"> <!-- latin capital letter E with acute,
+ U+00C9 ISOlat1 -->
+<!ENTITY Ecirc "Ê"> <!-- latin capital letter E with circumflex,
+ U+00CA ISOlat1 -->
+<!ENTITY Euml "Ë"> <!-- latin capital letter E with diaeresis,
+ U+00CB ISOlat1 -->
+<!ENTITY Igrave "Ì"> <!-- latin capital letter I with grave,
+ U+00CC ISOlat1 -->
+<!ENTITY Iacute "Í"> <!-- latin capital letter I with acute,
+ U+00CD ISOlat1 -->
+<!ENTITY Icirc "Î"> <!-- latin capital letter I with circumflex,
+ U+00CE ISOlat1 -->
+<!ENTITY Iuml "Ï"> <!-- latin capital letter I with diaeresis,
+ U+00CF ISOlat1 -->
+<!ENTITY ETH "Ð"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
+<!ENTITY Ntilde "Ñ"> <!-- latin capital letter N with tilde,
+ U+00D1 ISOlat1 -->
+<!ENTITY Ograve "Ò"> <!-- latin capital letter O with grave,
+ U+00D2 ISOlat1 -->
+<!ENTITY Oacute "Ó"> <!-- latin capital letter O with acute,
+ U+00D3 ISOlat1 -->
+<!ENTITY Ocirc "Ô"> <!-- latin capital letter O with circumflex,
+ U+00D4 ISOlat1 -->
+<!ENTITY Otilde "Õ"> <!-- latin capital letter O with tilde,
+ U+00D5 ISOlat1 -->
+<!ENTITY Ouml "Ö"> <!-- latin capital letter O with diaeresis,
+ U+00D6 ISOlat1 -->
+<!ENTITY times "×"> <!-- multiplication sign, U+00D7 ISOnum -->
+<!ENTITY Oslash "Ø"> <!-- latin capital letter O with stroke
+ = latin capital letter O slash,
+ U+00D8 ISOlat1 -->
+<!ENTITY Ugrave "Ù"> <!-- latin capital letter U with grave,
+ U+00D9 ISOlat1 -->
+<!ENTITY Uacute "Ú"> <!-- latin capital letter U with acute,
+ U+00DA ISOlat1 -->
+<!ENTITY Ucirc "Û"> <!-- latin capital letter U with circumflex,
+ U+00DB ISOlat1 -->
+<!ENTITY Uuml "Ü"> <!-- latin capital letter U with diaeresis,
+ U+00DC ISOlat1 -->
+<!ENTITY Yacute "Ý"> <!-- latin capital letter Y with acute,
+ U+00DD ISOlat1 -->
+<!ENTITY THORN "Þ"> <!-- latin capital letter THORN,
+ U+00DE ISOlat1 -->
+<!ENTITY szlig "ß"> <!-- latin small letter sharp s = ess-zed,
+ U+00DF ISOlat1 -->
+<!ENTITY agrave "à"> <!-- latin small letter a with grave
+ = latin small letter a grave,
+ U+00E0 ISOlat1 -->
+<!ENTITY aacute "á"> <!-- latin small letter a with acute,
+ U+00E1 ISOlat1 -->
+<!ENTITY acirc "â"> <!-- latin small letter a with circumflex,
+ U+00E2 ISOlat1 -->
+<!ENTITY atilde "ã"> <!-- latin small letter a with tilde,
+ U+00E3 ISOlat1 -->
+<!ENTITY auml "ä"> <!-- latin small letter a with diaeresis,
+ U+00E4 ISOlat1 -->
+<!ENTITY aring "å"> <!-- latin small letter a with ring above
+ = latin small letter a ring,
+ U+00E5 ISOlat1 -->
+<!ENTITY aelig "æ"> <!-- latin small letter ae
+ = latin small ligature ae, U+00E6 ISOlat1 -->
+<!ENTITY ccedil "ç"> <!-- latin small letter c with cedilla,
+ U+00E7 ISOlat1 -->
+<!ENTITY egrave "è"> <!-- latin small letter e with grave,
+ U+00E8 ISOlat1 -->
+<!ENTITY eacute "é"> <!-- latin small letter e with acute,
+ U+00E9 ISOlat1 -->
+<!ENTITY ecirc "ê"> <!-- latin small letter e with circumflex,
+ U+00EA ISOlat1 -->
+<!ENTITY euml "ë"> <!-- latin small letter e with diaeresis,
+ U+00EB ISOlat1 -->
+<!ENTITY igrave "ì"> <!-- latin small letter i with grave,
+ U+00EC ISOlat1 -->
+<!ENTITY iacute "í"> <!-- latin small letter i with acute,
+ U+00ED ISOlat1 -->
+<!ENTITY icirc "î"> <!-- latin small letter i with circumflex,
+ U+00EE ISOlat1 -->
+<!ENTITY iuml "ï"> <!-- latin small letter i with diaeresis,
+ U+00EF ISOlat1 -->
+<!ENTITY eth "ð"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
+<!ENTITY ntilde "ñ"> <!-- latin small letter n with tilde,
+ U+00F1 ISOlat1 -->
+<!ENTITY ograve "ò"> <!-- latin small letter o with grave,
+ U+00F2 ISOlat1 -->
+<!ENTITY oacute "ó"> <!-- latin small letter o with acute,
+ U+00F3 ISOlat1 -->
+<!ENTITY ocirc "ô"> <!-- latin small letter o with circumflex,
+ U+00F4 ISOlat1 -->
+<!ENTITY otilde "õ"> <!-- latin small letter o with tilde,
+ U+00F5 ISOlat1 -->
+<!ENTITY ouml "ö"> <!-- latin small letter o with diaeresis,
+ U+00F6 ISOlat1 -->
+<!ENTITY divide "÷"> <!-- division sign, U+00F7 ISOnum -->
+<!ENTITY oslash "ø"> <!-- latin small letter o with stroke,
+ = latin small letter o slash,
+ U+00F8 ISOlat1 -->
+<!ENTITY ugrave "ù"> <!-- latin small letter u with grave,
+ U+00F9 ISOlat1 -->
+<!ENTITY uacute "ú"> <!-- latin small letter u with acute,
+ U+00FA ISOlat1 -->
+<!ENTITY ucirc "û"> <!-- latin small letter u with circumflex,
+ U+00FB ISOlat1 -->
+<!ENTITY uuml "ü"> <!-- latin small letter u with diaeresis,
+ U+00FC ISOlat1 -->
+<!ENTITY yacute "ý"> <!-- latin small letter y with acute,
+ U+00FD ISOlat1 -->
+<!ENTITY thorn "þ"> <!-- latin small letter thorn with,
+ U+00FE ISOlat1 -->
+<!ENTITY yuml "ÿ"> <!-- latin small letter y with diaeresis,
+ U+00FF ISOlat1 -->
diff --git a/src/xhtml-special.ent b/src/xhtml-special.ent
@@ -0,0 +1,79 @@
+<!-- Special characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLspecial PUBLIC
+ "-//W3C//ENTITIES Special for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
+ %HTMLspecial;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- C0 Controls and Basic Latin -->
+<!ENTITY quot """> <!-- quotation mark = APL quote,
+ U+0022 ISOnum -->
+<!ENTITY amp "&"> <!-- ampersand, U+0026 ISOnum -->
+<!ENTITY lt "<"> <!-- less-than sign, U+003C ISOnum -->
+<!ENTITY gt ">"> <!-- greater-than sign, U+003E ISOnum -->
+<!ENTITY apos "'"> <!-- apostrophe mark, U+0027 ISOnum -->
+
+<!-- Latin Extended-A -->
+<!ENTITY OElig "Œ"> <!-- latin capital ligature OE,
+ U+0152 ISOlat2 -->
+<!ENTITY oelig "œ"> <!-- latin small ligature oe, U+0153 ISOlat2 -->
+<!-- ligature is a misnomer, this is a separate character in some languages -->
+<!ENTITY Scaron "Š"> <!-- latin capital letter S with caron,
+ U+0160 ISOlat2 -->
+<!ENTITY scaron "š"> <!-- latin small letter s with caron,
+ U+0161 ISOlat2 -->
+<!ENTITY Yuml "Ÿ"> <!-- latin capital letter Y with diaeresis,
+ U+0178 ISOlat2 -->
+
+<!-- Spacing Modifier Letters -->
+<!ENTITY circ "ˆ"> <!-- modifier letter circumflex accent,
+ U+02C6 ISOpub -->
+<!ENTITY tilde "˜"> <!-- small tilde, U+02DC ISOdia -->
+
+<!-- General Punctuation -->
+<!ENTITY ensp " "> <!-- en space, U+2002 ISOpub -->
+<!ENTITY emsp " "> <!-- em space, U+2003 ISOpub -->
+<!ENTITY thinsp " "> <!-- thin space, U+2009 ISOpub -->
+<!ENTITY zwnj "‌"> <!-- zero width non-joiner,
+ U+200C NEW RFC 2070 -->
+<!ENTITY zwj "‍"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
+<!ENTITY lrm "‎"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
+<!ENTITY rlm "‏"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
+<!ENTITY ndash "–"> <!-- en dash, U+2013 ISOpub -->
+<!ENTITY mdash "—"> <!-- em dash, U+2014 ISOpub -->
+<!ENTITY lsquo "‘"> <!-- left single quotation mark,
+ U+2018 ISOnum -->
+<!ENTITY rsquo "’"> <!-- right single quotation mark,
+ U+2019 ISOnum -->
+<!ENTITY sbquo "‚"> <!-- single low-9 quotation mark, U+201A NEW -->
+<!ENTITY ldquo "“"> <!-- left double quotation mark,
+ U+201C ISOnum -->
+<!ENTITY rdquo "”"> <!-- right double quotation mark,
+ U+201D ISOnum -->
+<!ENTITY bdquo "„"> <!-- double low-9 quotation mark, U+201E NEW -->
+<!ENTITY dagger "†"> <!-- dagger, U+2020 ISOpub -->
+<!ENTITY Dagger "‡"> <!-- double dagger, U+2021 ISOpub -->
+<!ENTITY permil "‰"> <!-- per mille sign, U+2030 ISOtech -->
+<!ENTITY lsaquo "‹"> <!-- single left-pointing angle quotation mark,
+ U+2039 ISO proposed -->
+<!-- lsaquo is proposed but not yet ISO standardized -->
+<!ENTITY rsaquo "›"> <!-- single right-pointing angle quotation mark,
+ U+203A ISO proposed -->
+<!-- rsaquo is proposed but not yet ISO standardized -->
+<!ENTITY euro "€"> <!-- euro sign, U+20AC NEW -->
diff --git a/src/xhtml-symbol.ent b/src/xhtml-symbol.ent
@@ -0,0 +1,242 @@
+<!-- Mathematical, Greek and Symbolic characters for HTML -->
+
+<!-- Character entity set. Typical invocation:
+ <!ENTITY % HTMLsymbol PUBLIC
+ "-//W3C//ENTITIES Symbols for XHTML//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
+ %HTMLsymbol;
+-->
+
+<!-- Portions (C) International Organization for Standardization 1986:
+ Permission to copy in any form is granted for use with
+ conforming SGML systems and applications as defined in
+ ISO 8879, provided this notice is included in all copies.
+-->
+
+<!-- Relevant ISO entity set is given unless names are newly introduced.
+ New names (i.e., not in ISO 8879 list) do not clash with any
+ existing ISO 8879 entity names. ISO 10646 character numbers
+ are given for each character, in hex. values are decimal
+ conversions of the ISO 10646 values and refer to the document
+ character set. Names are Unicode names.
+-->
+
+<!-- Latin Extended-B -->
+<!ENTITY fnof "ƒ"> <!-- latin small f with hook = function
+ = florin, U+0192 ISOtech -->
+
+<!-- Greek -->
+<!ENTITY Alpha "Α"> <!-- greek capital letter alpha, U+0391 -->
+<!ENTITY Beta "Β"> <!-- greek capital letter beta, U+0392 -->
+<!ENTITY Gamma "Γ"> <!-- greek capital letter gamma,
+ U+0393 ISOgrk3 -->
+<!ENTITY Delta "Δ"> <!-- greek capital letter delta,
+ U+0394 ISOgrk3 -->
+<!ENTITY Epsilon "Ε"> <!-- greek capital letter epsilon, U+0395 -->
+<!ENTITY Zeta "Ζ"> <!-- greek capital letter zeta, U+0396 -->
+<!ENTITY Eta "Η"> <!-- greek capital letter eta, U+0397 -->
+<!ENTITY Theta "Θ"> <!-- greek capital letter theta,
+ U+0398 ISOgrk3 -->
+<!ENTITY Iota "Ι"> <!-- greek capital letter iota, U+0399 -->
+<!ENTITY Kappa "Κ"> <!-- greek capital letter kappa, U+039A -->
+<!ENTITY Lambda "Λ"> <!-- greek capital letter lambda,
+ U+039B ISOgrk3 -->
+<!ENTITY Mu "Μ"> <!-- greek capital letter mu, U+039C -->
+<!ENTITY Nu "Ν"> <!-- greek capital letter nu, U+039D -->
+<!ENTITY Xi "Ξ"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
+<!ENTITY Omicron "Ο"> <!-- greek capital letter omicron, U+039F -->
+<!ENTITY Pi "Π"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
+<!ENTITY Rho "Ρ"> <!-- greek capital letter rho, U+03A1 -->
+<!-- there is no Sigmaf, and no U+03A2 character either -->
+<!ENTITY Sigma "Σ"> <!-- greek capital letter sigma,
+ U+03A3 ISOgrk3 -->
+<!ENTITY Tau "Τ"> <!-- greek capital letter tau, U+03A4 -->
+<!ENTITY Upsilon "Υ"> <!-- greek capital letter upsilon,
+ U+03A5 ISOgrk3 -->
+<!ENTITY Phi "Φ"> <!-- greek capital letter phi,
+ U+03A6 ISOgrk3 -->
+<!ENTITY Chi "Χ"> <!-- greek capital letter chi, U+03A7 -->
+<!ENTITY Psi "Ψ"> <!-- greek capital letter psi,
+ U+03A8 ISOgrk3 -->
+<!ENTITY Omega "Ω"> <!-- greek capital letter omega,
+ U+03A9 ISOgrk3 -->
+
+<!ENTITY alpha "α"> <!-- greek small letter alpha,
+ U+03B1 ISOgrk3 -->
+<!ENTITY beta "β"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
+<!ENTITY gamma "γ"> <!-- greek small letter gamma,
+ U+03B3 ISOgrk3 -->
+<!ENTITY delta "δ"> <!-- greek small letter delta,
+ U+03B4 ISOgrk3 -->
+<!ENTITY epsilon "ε"> <!-- greek small letter epsilon,
+ U+03B5 ISOgrk3 -->
+<!ENTITY zeta "ζ"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
+<!ENTITY eta "η"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
+<!ENTITY theta "θ"> <!-- greek small letter theta,
+ U+03B8 ISOgrk3 -->
+<!ENTITY iota "ι"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
+<!ENTITY kappa "κ"> <!-- greek small letter kappa,
+ U+03BA ISOgrk3 -->
+<!ENTITY lambda "λ"> <!-- greek small letter lambda,
+ U+03BB ISOgrk3 -->
+<!ENTITY mu "μ"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
+<!ENTITY nu "ν"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
+<!ENTITY xi "ξ"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
+<!ENTITY omicron "ο"> <!-- greek small letter omicron, U+03BF NEW -->
+<!ENTITY pi "π"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
+<!ENTITY rho "ρ"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
+<!ENTITY sigmaf "ς"> <!-- greek small letter final sigma,
+ U+03C2 ISOgrk3 -->
+<!ENTITY sigma "σ"> <!-- greek small letter sigma,
+ U+03C3 ISOgrk3 -->
+<!ENTITY tau "τ"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
+<!ENTITY upsilon "υ"> <!-- greek small letter upsilon,
+ U+03C5 ISOgrk3 -->
+<!ENTITY phi "φ"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
+<!ENTITY chi "χ"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
+<!ENTITY psi "ψ"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
+<!ENTITY omega "ω"> <!-- greek small letter omega,
+ U+03C9 ISOgrk3 -->
+<!ENTITY thetasym "ϑ"> <!-- greek small letter theta symbol,
+ U+03D1 NEW -->
+<!ENTITY upsih "ϒ"> <!-- greek upsilon with hook symbol,
+ U+03D2 NEW -->
+<!ENTITY piv "ϖ"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
+
+<!-- General Punctuation -->
+<!ENTITY bull "•"> <!-- bullet = black small circle,
+ U+2022 ISOpub -->
+<!-- bullet is NOT the same as bullet operator, U+2219 -->
+<!ENTITY hellip "…"> <!-- horizontal ellipsis = three dot leader,
+ U+2026 ISOpub -->
+<!ENTITY prime "′"> <!-- prime = minutes = feet, U+2032 ISOtech -->
+<!ENTITY Prime "″"> <!-- double prime = seconds = inches,
+ U+2033 ISOtech -->
+<!ENTITY oline "‾"> <!-- overline = spacing overscore,
+ U+203E NEW -->
+<!ENTITY frasl "⁄"> <!-- fraction slash, U+2044 NEW -->
+
+<!-- Letterlike Symbols -->
+<!ENTITY weierp "℘"> <!-- script capital P = power set
+ = Weierstrass p, U+2118 ISOamso -->
+<!ENTITY image "ℑ"> <!-- blackletter capital I = imaginary part,
+ U+2111 ISOamso -->
+<!ENTITY real "ℜ"> <!-- blackletter capital R = real part symbol,
+ U+211C ISOamso -->
+<!ENTITY trade "™"> <!-- trade mark sign, U+2122 ISOnum -->
+<!ENTITY alefsym "ℵ"> <!-- alef symbol = first transfinite cardinal,
+ U+2135 NEW -->
+<!-- alef symbol is NOT the same as hebrew letter alef,
+ U+05D0 although the same glyph could be used to depict both characters -->
+
+<!-- Arrows -->
+<!ENTITY larr "←"> <!-- leftwards arrow, U+2190 ISOnum -->
+<!ENTITY uarr "↑"> <!-- upwards arrow, U+2191 ISOnum-->
+<!ENTITY rarr "→"> <!-- rightwards arrow, U+2192 ISOnum -->
+<!ENTITY darr "↓"> <!-- downwards arrow, U+2193 ISOnum -->
+<!ENTITY harr "↔"> <!-- left right arrow, U+2194 ISOamsa -->
+<!ENTITY crarr "↵"> <!-- downwards arrow with corner leftwards
+ = carriage return, U+21B5 NEW -->
+<!ENTITY lArr "⇐"> <!-- leftwards double arrow, U+21D0 ISOtech -->
+<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
+ but also does not have any other character for that function. So ? lArr can
+ be used for 'is implied by' as ISOtech suggests -->
+<!ENTITY uArr "⇑"> <!-- upwards double arrow, U+21D1 ISOamsa -->
+<!ENTITY rArr "⇒"> <!-- rightwards double arrow,
+ U+21D2 ISOtech -->
+<!-- Unicode does not say this is the 'implies' character but does not have
+ another character with this function so ?
+ rArr can be used for 'implies' as ISOtech suggests -->
+<!ENTITY dArr "⇓"> <!-- downwards double arrow, U+21D3 ISOamsa -->
+<!ENTITY hArr "⇔"> <!-- left right double arrow,
+ U+21D4 ISOamsa -->
+
+<!-- Mathematical Operators -->
+<!ENTITY forall "∀"> <!-- for all, U+2200 ISOtech -->
+<!ENTITY part "∂"> <!-- partial differential, U+2202 ISOtech -->
+<!ENTITY exist "∃"> <!-- there exists, U+2203 ISOtech -->
+<!ENTITY empty "∅"> <!-- empty set = null set = diameter,
+ U+2205 ISOamso -->
+<!ENTITY nabla "∇"> <!-- nabla = backward difference,
+ U+2207 ISOtech -->
+<!ENTITY isin "∈"> <!-- element of, U+2208 ISOtech -->
+<!ENTITY notin "∉"> <!-- not an element of, U+2209 ISOtech -->
+<!ENTITY ni "∋"> <!-- contains as member, U+220B ISOtech -->
+<!-- should there be a more memorable name than 'ni'? -->
+<!ENTITY prod "∏"> <!-- n-ary product = product sign,
+ U+220F ISOamsb -->
+<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
+ the same glyph might be used for both -->
+<!ENTITY sum "∑"> <!-- n-ary sumation, U+2211 ISOamsb -->
+<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
+ though the same glyph might be used for both -->
+<!ENTITY minus "−"> <!-- minus sign, U+2212 ISOtech -->
+<!ENTITY lowast "∗"> <!-- asterisk operator, U+2217 ISOtech -->
+<!ENTITY radic "√"> <!-- square root = radical sign,
+ U+221A ISOtech -->
+<!ENTITY prop "∝"> <!-- proportional to, U+221D ISOtech -->
+<!ENTITY infin "∞"> <!-- infinity, U+221E ISOtech -->
+<!ENTITY ang "∠"> <!-- angle, U+2220 ISOamso -->
+<!ENTITY and "∧"> <!-- logical and = wedge, U+2227 ISOtech -->
+<!ENTITY or "∨"> <!-- logical or = vee, U+2228 ISOtech -->
+<!ENTITY cap "∩"> <!-- intersection = cap, U+2229 ISOtech -->
+<!ENTITY cup "∪"> <!-- union = cup, U+222A ISOtech -->
+<!ENTITY int "∫"> <!-- integral, U+222B ISOtech -->
+<!ENTITY there4 "∴"> <!-- therefore, U+2234 ISOtech -->
+<!ENTITY sim "∼"> <!-- tilde operator = varies with = similar to,
+ U+223C ISOtech -->
+<!-- tilde operator is NOT the same character as the tilde, U+007E,
+ although the same glyph might be used to represent both -->
+<!ENTITY cong "≅"> <!-- approximately equal to, U+2245 ISOtech -->
+<!ENTITY asymp "≈"> <!-- almost equal to = asymptotic to,
+ U+2248 ISOamsr -->
+<!ENTITY ne "≠"> <!-- not equal to, U+2260 ISOtech -->
+<!ENTITY equiv "≡"> <!-- identical to, U+2261 ISOtech -->
+<!ENTITY le "≤"> <!-- less-than or equal to, U+2264 ISOtech -->
+<!ENTITY ge "≥"> <!-- greater-than or equal to,
+ U+2265 ISOtech -->
+<!ENTITY sub "⊂"> <!-- subset of, U+2282 ISOtech -->
+<!ENTITY sup "⊃"> <!-- superset of, U+2283 ISOtech -->
+<!-- note that nsup, 'not a superset of, U+2283' is not covered by the Symbol
+ font encoding and is not included. Should it be, for symmetry?
+ It is in ISOamsn -->
+<!ENTITY nsub "⊄"> <!-- not a subset of, U+2284 ISOamsn -->
+<!ENTITY sube "⊆"> <!-- subset of or equal to, U+2286 ISOtech -->
+<!ENTITY supe "⊇"> <!-- superset of or equal to,
+ U+2287 ISOtech -->
+<!ENTITY oplus "⊕"> <!-- circled plus = direct sum,
+ U+2295 ISOamsb -->
+<!ENTITY otimes "⊗"> <!-- circled times = vector product,
+ U+2297 ISOamsb -->
+<!ENTITY perp "⊥"> <!-- up tack = orthogonal to = perpendicular,
+ U+22A5 ISOtech -->
+<!ENTITY sdot "⋅"> <!-- dot operator, U+22C5 ISOamsb -->
+<!-- dot operator is NOT the same character as U+00B7 middle dot -->
+
+<!-- Miscellaneous Technical -->
+<!ENTITY lceil "⌈"> <!-- left ceiling = apl upstile,
+ U+2308 ISOamsc -->
+<!ENTITY rceil "⌉"> <!-- right ceiling, U+2309 ISOamsc -->
+<!ENTITY lfloor "⌊"> <!-- left floor = apl downstile,
+ U+230A ISOamsc -->
+<!ENTITY rfloor "⌋"> <!-- right floor, U+230B ISOamsc -->
+<!ENTITY lang "〈"> <!-- left-pointing angle bracket = bra,
+ U+2329 ISOtech -->
+<!-- lang is NOT the same character as U+003C 'less than'
+ or U+2039 'single left-pointing angle quotation mark' -->
+<!ENTITY rang "〉"> <!-- right-pointing angle bracket = ket,
+ U+232A ISOtech -->
+<!-- rang is NOT the same character as U+003E 'greater than'
+ or U+203A 'single right-pointing angle quotation mark' -->
+
+<!-- Geometric Shapes -->
+<!ENTITY loz "◊"> <!-- lozenge, U+25CA ISOpub -->
+
+<!-- Miscellaneous Symbols -->
+<!ENTITY spades "♠"> <!-- black spade suit, U+2660 ISOpub -->
+<!-- black here seems to mean filled as opposed to hollow -->
+<!ENTITY clubs "♣"> <!-- black club suit = shamrock,
+ U+2663 ISOpub -->
+<!ENTITY hearts "♥"> <!-- black heart suit = valentine,
+ U+2665 ISOpub -->
+<!ENTITY diams "♦"> <!-- black diamond suit, U+2666 ISOpub -->
diff --git a/tests/Makefile.in b/tests/Makefile.in
@@ -119,6 +119,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -126,9 +128,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -202,6 +201,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
diff --git a/tests/test-uri.c b/tests/test-uri.c
@@ -16,6 +16,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
+#include <stdlib.h>
+#include <string.h>
#include "mn-uri.h"
static char *
diff --git a/ui/Makefile.am b/ui/Makefile.am
@@ -1,13 +1,19 @@
uidir = $(pkgdatadir)/ui
interfaces = \
+ $(mail_summary_interfaces) \
mailbox-properties.glade \
properties.glade \
+ summary-dialog.glade \
+ summary-popup.glade \
welcome.glade
projects = \
+ $(mail_summary_projects) \
mailbox-properties.gladep \
properties.gladep \
+ summary-dialog.gladep \
+ summary-popup.gladep \
welcome.gladep
dist_ui_DATA = $(interfaces)
diff --git a/ui/Makefile.in b/ui/Makefile.in
@@ -83,6 +83,8 @@ GCONF_SCHEMAS_INSTALL_TRUE = @GCONF_SCHEMAS_INSTALL_TRUE@
GCONF_SCHEMA_CONFIG_SOURCE = @GCONF_SCHEMA_CONFIG_SOURCE@
GCONF_SCHEMA_FILE_DIR = @GCONF_SCHEMA_FILE_DIR@
GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
+GMIME_CFLAGS = @GMIME_CFLAGS@
+GMIME_LIBS = @GMIME_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNOME_CFLAGS = @GNOME_CFLAGS@
@@ -90,9 +92,6 @@ GNOME_LIBS = @GNOME_LIBS@
GOB2 = @GOB2@
GTK_CFLAGS = @GTK_CFLAGS@
GTK_LIBS = @GTK_LIBS@
-G_ASSERTIONS = @G_ASSERTIONS@
-HAVE_SOUP_FALSE = @HAVE_SOUP_FALSE@
-HAVE_SOUP_TRUE = @HAVE_SOUP_TRUE@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -166,6 +165,8 @@ WITH_MBOX_FALSE = @WITH_MBOX_FALSE@
WITH_MBOX_TRUE = @WITH_MBOX_TRUE@
WITH_MH_FALSE = @WITH_MH_FALSE@
WITH_MH_TRUE = @WITH_MH_TRUE@
+WITH_MIME_FALSE = @WITH_MIME_FALSE@
+WITH_MIME_TRUE = @WITH_MIME_TRUE@
WITH_POP3_FALSE = @WITH_POP3_FALSE@
WITH_POP3_OR_IMAP_FALSE = @WITH_POP3_OR_IMAP_FALSE@
WITH_POP3_OR_IMAP_TRUE = @WITH_POP3_OR_IMAP_TRUE@
@@ -208,13 +209,19 @@ sysconfdir = @sysconfdir@
target_alias = @target_alias@
uidir = $(pkgdatadir)/ui
interfaces = \
+ $(mail_summary_interfaces) \
mailbox-properties.glade \
properties.glade \
+ summary-dialog.glade \
+ summary-popup.glade \
welcome.glade
projects = \
+ $(mail_summary_projects) \
mailbox-properties.gladep \
properties.gladep \
+ summary-dialog.gladep \
+ summary-popup.gladep \
welcome.gladep
dist_ui_DATA = $(interfaces)
diff --git a/ui/properties.glade b/ui/properties.glade
@@ -19,21 +19,21 @@
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="has_separator">False</property>
- <signal name="response" handler="mn_properties_response_h" last_modification_time="Sat, 06 Dec 2003 12:33:33 GMT"/>
+ <signal name="response" handler="mn_properties_response_h" last_modification_time="Sat, 02 Oct 2004 18:23:37 GMT"/>
<child internal-child="vbox">
- <widget class="GtkVBox" id="vbox1">
+ <widget class="GtkVBox" id="dialog-vbox1">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">12</property>
+ <property name="spacing">0</property>
<child internal-child="action_area">
- <widget class="GtkHButtonBox" id="hbuttonbox1">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
<property name="visible">True</property>
<property name="layout_style">GTK_BUTTONBOX_END</property>
<child>
- <widget class="GtkButton" id="button3">
+ <widget class="GtkButton" id="helpbutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
@@ -46,7 +46,7 @@
</child>
<child>
- <widget class="GtkButton" id="button4">
+ <widget class="GtkButton" id="closebutton1">
<property name="visible">True</property>
<property name="can_default">True</property>
<property name="can_focus">True</property>
@@ -67,31 +67,36 @@
</child>
<child>
- <widget class="GtkVBox" id="vbox2">
+ <widget class="GtkNotebook" id="notebook">
<property name="border_width">5</property>
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">18</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">True</property>
+ <property name="show_border">True</property>
+ <property name="tab_pos">GTK_POS_TOP</property>
+ <property name="scrollable">False</property>
+ <property name="enable_popup">False</property>
<child>
- <widget class="GtkVBox" id="vbox3">
+ <widget class="GtkVBox" id="vbox12">
+ <property name="border_width">12</property>
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkLabel" id="label1">
+ <widget class="GtkCheckButton" id="autostart_check">
<property name="visible">True</property>
- <property name="label" translatable="yes"><span weight="bold">General</span></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
+ <property name="tooltip" translatable="yes">Whether to start Mail Notification when you log into your GNOME session or not</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Start Mail Notification on GNOME login</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="mn_properties_autostart_toggled_h" last_modification_time="Mon, 23 Aug 2004 01:36:43 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -101,21 +106,127 @@
</child>
<child>
- <widget class="GtkHBox" id="hbox1">
+ <widget class="GtkCheckButton" id="blink_check">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Whether the status icon should blink on errors or not</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Blink on errors</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox9">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">0</property>
+ <property name="spacing">12</property>
<child>
- <widget class="GtkLabel" id="label2">
+ <widget class="GtkCheckButton" id="command_new_mail_check">
<property name="visible">True</property>
- <property name="label" translatable="yes"> </property>
+ <property name="tooltip" translatable="yes">Whether to run a command when new mail arrives or not</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Run a command when new mail arrives:</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Sun, 27 Jul 2003 08:45:08 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkEntry" id="command_new_mail_entry">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">The command to run when new mail arrives</property>
+ <property name="can_focus">True</property>
+ <property name="editable">True</property>
+ <property name="visibility">True</property>
+ <property name="max_length">0</property>
+ <property name="text" translatable="yes"></property>
+ <property name="has_frame">True</property>
+ <property name="invisible_char" translatable="yes">*</property>
+ <property name="activates_default">False</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label25">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">General</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox13">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox19">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label32">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><span weight="bold">General</span></property>
<property name="use_underline">False</property>
- <property name="use_markup">False</property>
+ <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
- <property name="xalign">0.5</property>
+ <property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
@@ -128,10 +239,31 @@
</child>
<child>
- <widget class="GtkVBox" id="vbox9">
+ <widget class="GtkHBox" id="hbox25">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">6</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label33">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
<child>
<widget class="GtkHBox" id="hbox11">
@@ -262,112 +394,37 @@
<property name="fill">True</property>
</packing>
</child>
-
- <child>
- <widget class="GtkCheckButton" id="autostart_check">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Whether to start Mail Notification when you log into your GNOME session or not</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Start Mail Notification on GNOME login</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="mn_properties_autostart_toggled_h" last_modification_time="Mon, 23 Aug 2004 01:36:43 GMT"/>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkCheckButton" id="blink_check">
- <property name="visible">True</property>
- <property name="tooltip" translatable="yes">Whether the status icon should blink on errors or not</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">_Blink on errors</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkVBox" id="vbox5">
- <property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
-
- <child>
- <widget class="GtkLabel" id="label7">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><span weight="bold">Mailboxes</span></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox4">
+ <widget class="GtkVBox" id="vbox20">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">0</property>
+ <property name="spacing">6</property>
<child>
- <widget class="GtkLabel" id="label8">
+ <widget class="GtkLabel" id="label34">
<property name="visible">True</property>
- <property name="label" translatable="yes"> </property>
+ <property name="label" translatable="yes"><span weight="bold">Mailbox List</span></property>
<property name="use_underline">False</property>
- <property name="use_markup">False</property>
+ <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
- <property name="xalign">0.5</property>
+ <property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
@@ -380,35 +437,15 @@
</child>
<child>
- <widget class="GtkVBox" id="vbox6">
+ <widget class="GtkHBox" id="hbox26">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">6</property>
+ <property name="spacing">0</property>
<child>
- <widget class="GtkScrolledWindow" id="scrolled">
+ <widget class="GtkLabel" id="label35">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
- <property name="shadow_type">GTK_SHADOW_IN</property>
- <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
-
- <child>
- <placeholder/>
- </child>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
- </packing>
- </child>
-
- <child>
- <widget class="GtkLabel" id="selected_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes"></property>
+ <property name="label" translatable="yes"> </property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
@@ -427,20 +464,23 @@
</child>
<child>
- <widget class="GtkHBox" id="hbox5">
+ <widget class="GtkVBox" id="vbox21">
<property name="visible">True</property>
- <property name="homogeneous">True</property>
+ <property name="homogeneous">False</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkButton" id="button2">
+ <widget class="GtkScrolledWindow" id="scrolled">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="label">gtk-add</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="mn_properties_add_clicked_h" last_modification_time="Thu, 27 May 2004 20:34:29 GMT"/>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <placeholder/>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -450,43 +490,94 @@
</child>
<child>
- <widget class="GtkButton" id="remove">
+ <widget class="GtkLabel" id="selected_label">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-remove</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="mn_properties_remove_clicked_h" last_modification_time="Sat, 06 Dec 2003 14:00:02 GMT"/>
+ <property name="label" translatable="yes"></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
</packing>
</child>
<child>
- <widget class="GtkButton" id="properties">
+ <widget class="GtkHBox" id="hbox5">
<property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="label">gtk-properties</property>
- <property name="use_stock">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <signal name="clicked" handler="mn_properties_properties_clicked_h" last_modification_time="Sat, 05 Jun 2004 20:07:54 GMT"/>
+ <property name="homogeneous">True</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkButton" id="button2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-add</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="mn_properties_add_clicked_h" last_modification_time="Thu, 27 May 2004 20:34:29 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="remove">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-remove</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="mn_properties_remove_clicked_h" last_modification_time="Sat, 06 Dec 2003 14:00:02 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="properties">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-properties</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <signal name="clicked" handler="mn_properties_properties_clicked_h" last_modification_time="Sat, 05 Jun 2004 20:07:54 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
</packing>
</child>
</widget>
@@ -505,55 +596,53 @@
</child>
</widget>
<packing>
- <property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox7">
+ <widget class="GtkLabel" id="label26">
<property name="visible">True</property>
- <property name="homogeneous">False</property>
- <property name="spacing">6</property>
+ <property name="label" translatable="yes">Mailboxes</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
+ </packing>
+ </child>
- <child>
- <widget class="GtkLabel" id="label11">
- <property name="visible">True</property>
- <property name="label" translatable="yes"><span weight="bold">Commands</span></property>
- <property name="use_underline">False</property>
- <property name="use_markup">True</property>
- <property name="justify">GTK_JUSTIFY_LEFT</property>
- <property name="wrap">False</property>
- <property name="selectable">False</property>
- <property name="xalign">0</property>
- <property name="yalign">0.5</property>
- <property name="xpad">0</property>
- <property name="ypad">0</property>
- </widget>
- <packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
- </packing>
- </child>
+ <child>
+ <widget class="GtkVBox" id="vbox14">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">18</property>
<child>
- <widget class="GtkHBox" id="hbox8">
+ <widget class="GtkVBox" id="vbox15">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">0</property>
+ <property name="spacing">6</property>
<child>
- <widget class="GtkLabel" id="label12">
+ <widget class="GtkLabel" id="label28">
<property name="visible">True</property>
- <property name="label" translatable="yes"> </property>
+ <property name="label" translatable="yes"><span weight="bold">General</span></property>
<property name="use_underline">False</property>
- <property name="use_markup">False</property>
+ <property name="use_markup">True</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
- <property name="xalign">0.5</property>
+ <property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
@@ -566,30 +655,51 @@
</child>
<child>
- <widget class="GtkVBox" id="vbox8">
+ <widget class="GtkHBox" id="hbox23">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">6</property>
+ <property name="spacing">0</property>
<child>
- <widget class="GtkHBox" id="hbox9">
+ <widget class="GtkLabel" id="label29">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox16">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">12</property>
+ <property name="spacing">6</property>
<child>
- <widget class="GtkCheckButton" id="command_new_mail_check">
+ <widget class="GtkCheckButton" id="summary_enable_check">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Whether to run a command when new mail arrives or not</property>
+ <property name="tooltip" translatable="yes">Whether to display the mail summary popup when new mail arrives or not</property>
<property name="can_focus">True</property>
- <property name="label" translatable="yes">When _new mail arrives:</property>
+ <property name="label" translatable="yes">_Enable mail summary popup</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
- <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Sun, 27 Jul 2003 08:45:08 GMT"/>
+ <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Wed, 15 Sep 2004 19:20:43 GMT"/>
</widget>
<packing>
<property name="padding">0</property>
@@ -599,17 +709,126 @@
</child>
<child>
- <widget class="GtkEntry" id="command_new_mail_entry">
+ <widget class="GtkHBox" id="hbox15">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">The command to run when new mail arrives</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char" translatable="yes">*</property>
- <property name="activates_default">False</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkCheckButton" id="summary_autoclose_check">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Whether to automatically close the mail summary popup or not</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">_Automatically close after:</property>
+ <property name="use_underline">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="active">False</property>
+ <property name="inconsistent">False</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Wed, 15 Sep 2004 19:20:52 GMT"/>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox16">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkSpinButton" id="summary_minutes_spin">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">The amount of time to wait before closing the mail summary popup</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">1 0 1440 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="summary_minutes_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">minutes</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkSpinButton" id="summary_seconds_spin">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">The amount of time to wait before closing the mail summary popup</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">1 0 59 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="summary_seconds_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">seconds</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -624,26 +843,119 @@
<property name="fill">True</property>
</packing>
</child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox17">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkLabel" id="label30">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><span weight="bold">Position</span></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox24">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkLabel" id="label31">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"> </property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
<child>
- <widget class="GtkHBox" id="hbox10">
+ <widget class="GtkVBox" id="vbox18">
<property name="visible">True</property>
<property name="homogeneous">False</property>
- <property name="spacing">12</property>
+ <property name="spacing">6</property>
<child>
- <widget class="GtkCheckButton" id="command_double_clicked_check">
+ <widget class="GtkHBox" id="hbox17">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">Whether to run a command when the icon is double-clicked or not</property>
- <property name="can_focus">True</property>
- <property name="label" translatable="yes">When double-click_ed:</property>
- <property name="use_underline">True</property>
- <property name="relief">GTK_RELIEF_NORMAL</property>
- <property name="focus_on_click">True</property>
- <property name="active">False</property>
- <property name="inconsistent">False</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="mn_properties_toggled_h" last_modification_time="Sun, 27 Jul 2003 08:45:01 GMT"/>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="summary_position_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">P_osition:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">summary_position_combo</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkComboBox" id="summary_position_combo">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
@@ -653,22 +965,180 @@
</child>
<child>
- <widget class="GtkEntry" id="command_double_clicked_entry">
+ <widget class="GtkHBox" id="hbox18">
<property name="visible">True</property>
- <property name="tooltip" translatable="yes">The command to run when the icon is double-clicked</property>
- <property name="can_focus">True</property>
- <property name="editable">True</property>
- <property name="visibility">True</property>
- <property name="max_length">0</property>
- <property name="text" translatable="yes"></property>
- <property name="has_frame">True</property>
- <property name="invisible_char" translatable="yes">*</property>
- <property name="activates_default">False</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="summary_horizontal_offset_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Hori_zontal offset:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">summary_horizontal_offset_spin</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox19">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkSpinButton" id="summary_horizontal_offset_spin">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">The number of pixels to leave between the left or right side of the screen and the mail summary popup</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">1 0 9999 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="summary_horizontal_pixels_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">pixels</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
</widget>
<packing>
<property name="padding">0</property>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox20">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkLabel" id="summary_vertical_offset_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Vertical offset:</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ <property name="mnemonic_widget">summary_vertical_offset_spin</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHBox" id="hbox21">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">6</property>
+
+ <child>
+ <widget class="GtkSpinButton" id="summary_vertical_offset_spin">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">The number of pixels to leave between the top or bottom side of the screen and the mail summary popup</property>
+ <property name="can_focus">True</property>
+ <property name="climb_rate">1</property>
+ <property name="digits">0</property>
+ <property name="numeric">True</property>
+ <property name="update_policy">GTK_UPDATE_ALWAYS</property>
+ <property name="snap_to_ticks">False</property>
+ <property name="wrap">False</property>
+ <property name="adjustment">1 0 9999 1 10 10</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="summary_vertical_pixels_label">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">pixels</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
</packing>
</child>
</widget>
@@ -694,9 +1164,27 @@
</child>
</widget>
<packing>
- <property name="padding">0</property>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="tab_expand">False</property>
+ <property name="tab_fill">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label27">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Mail Summary Popup</property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="type">tab</property>
</packing>
</child>
</widget>
diff --git a/ui/summary-dialog.glade b/ui/summary-dialog.glade
@@ -0,0 +1,176 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkDialog" id="dialog">
+ <property name="border_width">6</property>
+ <property name="title" translatable="yes">Mail Summary</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_CENTER</property>
+ <property name="modal">False</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="icon">mail-notification.png</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <property name="has_separator">False</property>
+ <signal name="response" handler="mn_summary_dialog_response_h" last_modification_time="Wed, 15 Sep 2004 22:12:21 GMT"/>
+
+ <child internal-child="vbox">
+ <widget class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child internal-child="action_area">
+ <widget class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">GTK_BUTTONBOX_END</property>
+
+ <child>
+ <widget class="GtkButton" id="helpbutton1">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-help</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-11</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="update_button">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">1</property>
+
+ <child>
+ <widget class="GtkAlignment" id="alignment1">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xscale">0</property>
+ <property name="yscale">0</property>
+ <property name="top_padding">0</property>
+ <property name="bottom_padding">0</property>
+ <property name="left_padding">0</property>
+ <property name="right_padding">0</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">2</property>
+
+ <child>
+ <widget class="GtkImage" id="image1">
+ <property name="visible">True</property>
+ <property name="stock">gtk-refresh</property>
+ <property name="icon_size">4</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Update</property>
+ <property name="use_underline">True</property>
+ <property name="use_markup">False</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkButton" id="button4">
+ <property name="visible">True</property>
+ <property name="can_default">True</property>
+ <property name="can_focus">True</property>
+ <property name="label">gtk-close</property>
+ <property name="use_stock">True</property>
+ <property name="relief">GTK_RELIEF_NORMAL</property>
+ <property name="focus_on_click">True</property>
+ <property name="response_id">-7</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="pack_type">GTK_PACK_END</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="border_width">5</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_NONE</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkViewport" id="viewport1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+
+ <child>
+ <widget class="GtkVBox" id="vbox">
+ <property name="border_width">6</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/ui/summary-dialog.gladep b/ui/summary-dialog.gladep
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+ <name>Mail Notification Summary Dialog</name>
+ <program_name>mail-notification</program_name>
+ <directory>../</directory>
+ <source_directory>../src</source_directory>
+ <pixmaps_directory>../art</pixmaps_directory>
+ <output_main_file>FALSE</output_main_file>
+ <output_support_files>FALSE</output_support_files>
+ <output_build_files>FALSE</output_build_files>
+ <translatable_strings_file>../</translatable_strings_file>
+</glade-project>
diff --git a/ui/summary-popup.glade b/ui/summary-popup.glade
@@ -0,0 +1,112 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+<requires lib="gnome"/>
+
+<widget class="GtkWindow" id="popup">
+ <property name="title" translatable="yes"></property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="resizable">False</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">False</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="skip_pager_hint">True</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+
+ <child>
+ <widget class="GtkEventBox" id="eventbox1">
+ <property name="visible">True</property>
+ <property name="visible_window">False</property>
+ <property name="above_child">False</property>
+ <signal name="button_press_event" handler="mn_summary_popup_button_press_event_h" last_modification_time="Wed, 15 Sep 2004 18:53:08 GMT"/>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="border_width">12</property>
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkHBox" id="hbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">12</property>
+
+ <child>
+ <widget class="GtkImage" id="image">
+ <property name="visible">True</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkLabel" id="label1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes"><span size="larger" weight="bold">Mail Summary</span></property>
+ <property name="use_underline">False</property>
+ <property name="use_markup">True</property>
+ <property name="justify">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap">False</property>
+ <property name="selectable">False</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHSeparator" id="hseparator1">
+ <property name="visible">True</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVBox" id="vbox">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/ui/summary-popup.gladep b/ui/summary-popup.gladep
@@ -0,0 +1,14 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-project SYSTEM "http://glade.gnome.org/glade-project-2.0.dtd">
+
+<glade-project>
+ <name>Mail Notification Summary Popup</name>
+ <program_name>mail-notification</program_name>
+ <directory>../</directory>
+ <source_directory>../src</source_directory>
+ <pixmaps_directory>../art</pixmaps_directory>
+ <output_main_file>FALSE</output_main_file>
+ <output_support_files>FALSE</output_support_files>
+ <output_build_files>FALSE</output_build_files>
+ <translatable_strings_file>../</translatable_strings_file>
+</glade-project>