aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--composer/ChangeLog4
-rw-r--r--composer/Makefile.am8
-rw-r--r--composer/e-msg-composer-attachment-bar.c13
-rw-r--r--composer/e-msg-composer-hdrs.c10
-rw-r--r--composer/e-msg-composer.c135
-rw-r--r--composer/mail-composer-errors.xml.in24
6 files changed, 75 insertions, 119 deletions
diff --git a/composer/ChangeLog b/composer/ChangeLog
index 3cb82e6d39..3dfa45febc 100644
--- a/composer/ChangeLog
+++ b/composer/ChangeLog
@@ -1,3 +1,7 @@
+2004-04-28 Not Zed <NotZed@Ximian.com>
+
+ ** Changed error messages to EError.
+
2004-04-27 Not Zed <NotZed@Ximian.com>
* e-msg-composer-attachment-bar.c (update): duh, pass the string
diff --git a/composer/Makefile.am b/composer/Makefile.am
index 7ffdc41eca..17d918f3ac 100644
--- a/composer/Makefile.am
+++ b/composer/Makefile.am
@@ -29,6 +29,11 @@ $(HTML_EDITOR_GENERATED): $(GTKHTML_DATADIR)/Editor.idl
##
+error_in_files = mail-composer-errors.xml.in
+error_DATA = $(error_in_files:.xml.in=.xml)
+errordir = $(privdatadir)/errors
+@INTLTOOL_XML_RULE@
+
idl_DATA = $(IDLS)
glade_DATA = \
@@ -77,11 +82,12 @@ libcomposer_la_SOURCES = \
listener.h
EXTRA_DIST = \
+ $(error_in_files) \
$(glade_DATA) \
$(IDLS) \
ChangeLog.pre-1-4
-BUILT_SOURCES = $(IDL_GENERATED) $(HTML_EDITOR_GENERATED)
+BUILT_SOURCES = $(IDL_GENERATED) $(HTML_EDITOR_GENERATED) $(error_DATA)
CLEANFILES = $(BUILT_SOURCES)
dist-hook:
diff --git a/composer/e-msg-composer-attachment-bar.c b/composer/e-msg-composer-attachment-bar.c
index 3cd58a9955..c8cf9b5e7b 100644
--- a/composer/e-msg-composer-attachment-bar.c
+++ b/composer/e-msg-composer-attachment-bar.c
@@ -21,7 +21,6 @@
*
*/
-
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -55,6 +54,7 @@
#include "e-util/e-gui-utils.h"
#include "e-util/e-icon-factory.h"
+#include "widgets/misc/e-error.h"
#define ICON_WIDTH 64
#define ICON_SEPARATORS " /-_"
@@ -171,22 +171,15 @@ add_from_file (EMsgComposerAttachmentBar *bar,
const char *disposition)
{
EMsgComposerAttachment *attachment;
- EMsgComposer *composer;
CamelException ex;
- GtkWidget *dialog;
camel_exception_init (&ex);
attachment = e_msg_composer_attachment_new (file_name, disposition, &ex);
if (attachment) {
add_common (bar, attachment);
} else {
- composer = E_MSG_COMPOSER (gtk_widget_get_toplevel (GTK_WIDGET (bar)));
- dialog = gtk_message_dialog_new(GTK_WINDOW(composer),
- GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- "%s", camel_exception_get_description (&ex));
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
+ e_error_run((GtkWindow *)gtk_widget_get_toplevel((GtkWidget *)bar), "mail-composer:no-attach",
+ file_name, camel_exception_get_description(&ex), NULL);
camel_exception_clear (&ex);
}
}
diff --git a/composer/e-msg-composer-hdrs.c b/composer/e-msg-composer-hdrs.c
index d9c444dc3b..5d23e385e0 100644
--- a/composer/e-msg-composer-hdrs.c
+++ b/composer/e-msg-composer-hdrs.c
@@ -51,6 +51,8 @@
#include <gal/e-text/e-entry.h>
+#include "widgets/misc/e-error.h"
+
#include <camel/camel.h>
#include "e-msg-composer-hdrs.h"
#include "mail/mail-config.h"
@@ -266,7 +268,7 @@ static void
account_removed_cb (EAccountList *accounts, EAccount *account, EMsgComposerHdrs *hdrs)
{
struct _EMsgComposerHdrsPrivate *priv = hdrs->priv;
- GtkWidget *item, *omenu, *toplevel, *dialog;
+ GtkWidget *item, *omenu, *toplevel;
EAccount *acnt;
GSList *node;
@@ -302,10 +304,8 @@ account_removed_cb (EAccountList *accounts, EAccount *account, EMsgComposerHdrs
toplevel = gtk_widget_get_toplevel ((GtkWidget *) hdrs);
gtk_widget_set_sensitive (toplevel, FALSE);
- dialog = gtk_message_dialog_new ((GtkWindow *) toplevel, GTK_DIALOG_MODAL |
- GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_WARNING, GTK_BUTTONS_OK, "%s",
- _("You need to configure an account before you can compose mail."));
+ /* FIXME: this should offer a 'configure account' button, can we do that? */
+ e_error_run((GtkWindow *)toplevel, "mail-composer:all-accounts-deleted", NULL);
}
}
}
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index b355e85db3..6330686394 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -91,6 +91,7 @@
#include "e-util/e-signature-list.h"
#include "widgets/misc/e-charset-picker.h"
#include "widgets/misc/e-expander.h"
+#include "widgets/misc/e-error.h"
#include <camel/camel-session.h>
#include <camel/camel-charset-map.h>
@@ -786,14 +787,8 @@ skip_content:
camel_object_unref (new);
if (ex.id != CAMEL_EXCEPTION_USER_CANCEL) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(GTK_WINDOW(composer),
- GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- "%s", camel_exception_get_description (&ex));
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
+ e_error_run((GtkWindow *)composer, "mail-composer:no-build-message",
+ camel_exception_get_description(&ex), NULL);
}
camel_exception_clear (&ex);
@@ -822,17 +817,9 @@ get_file_content (EMsgComposer *composer, const char *file_name, gboolean want_h
fd = open (file_name, O_RDONLY);
if (fd == -1) {
- if (warn) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new(GTK_WINDOW(composer),
- GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK,
- _("Error while reading file %s:\n%s"),
- file_name, g_strerror (errno));
- gtk_dialog_run(GTK_DIALOG(dialog));
- gtk_widget_destroy(dialog);
- }
+ if (warn)
+ e_error_run((GtkWindow *)composer, "mail-composer:no-sig-file",
+ file_name, g_strerror(errno), NULL);
return g_strdup ("");
}
@@ -1201,27 +1188,18 @@ save (EMsgComposer *composer, const char *default_filename)
/* check to see if we already have the file and that we can create it */
if ((fd = open (filename, O_RDONLY | O_CREAT | O_EXCL, 0777)) == -1) {
int resp, errnosav = errno;
- GtkWidget *dialog;
struct stat st;
if (stat (filename, &st) == 0 && S_ISREG (st.st_mode)) {
- dialog = gtk_message_dialog_new (GTK_WINDOW (composer),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
- _("File exists, overwrite?"));
- resp = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
- if (resp != GTK_RESPONSE_YES) {
+ resp = e_error_run((GtkWindow *)composer, E_ERROR_ASK_FILE_EXISTS_OVERWRITE,
+ filename, NULL);
+ if (resp != GTK_RESPONSE_OK) {
g_free (filename);
return;
}
} else {
- dialog = gtk_message_dialog_new (GTK_WINDOW (composer),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE,
- _("Error saving file: %s"), g_strerror (errnosav));
- gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
+ e_error_run((GtkWindow *)composer, E_ERROR_NO_SAVE_FILE,
+ filename, g_strerror(errnosav));
g_free (filename);
return;
}
@@ -1233,10 +1211,8 @@ save (EMsgComposer *composer, const char *default_filename)
Bonobo_PersistFile_save (composer->persist_file_interface, filename, &ev);
if (ev._major != CORBA_NO_EXCEPTION) {
- char *tmp = g_path_get_basename (filename);
-
- e_notice (composer, GTK_MESSAGE_ERROR, _("Error saving file: %s"), tmp);
- g_free(tmp);
+ e_error_run((GtkWindow *)composer, E_ERROR_NO_SAVE_FILE,
+ filename, _("Unknown reason"));
} else {
GNOME_GtkHTML_Editor_Engine_runCommand (composer->editor_engine, "saved", &ev);
e_msg_composer_unset_autosaved (composer);
@@ -1255,13 +1231,9 @@ load (EMsgComposer *composer, const char *file_name)
Bonobo_PersistFile_load (composer->persist_file_interface, file_name, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- char *tmp = g_path_get_basename(file_name);
-
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Error loading file: %s"), tmp);
- g_free(tmp);
- }
+ if (ev._major != CORBA_NO_EXCEPTION)
+ e_error_run((GtkWindow *)composer, E_ERROR_NO_LOAD_FILE,
+ file_name, _("Unknown reason"), NULL);
CORBA_exception_free (&ev);
}
@@ -1296,39 +1268,26 @@ autosave_save_draft (EMsgComposer *composer)
file = composer->autosave_file;
if (fd == -1) {
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Error accessing file: %s"), file);
+ /* This code is odd, the fd is opened elsewhere but a failure is ignored */
+ e_error_run((GtkWindow *)composer, "mail-composer:no-autosave",
+ file, _("Could not open file"), NULL);
return FALSE;
}
message = e_msg_composer_get_message_draft (composer);
if (message == NULL) {
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Unable to retrieve message from editor"));
+ e_error_run((GtkWindow *)composer, "mail-composer:no-autosave",
+ file, _("Unable to retrieve message from editor"), NULL);
return FALSE;
}
- if (lseek (fd, (off_t)0, SEEK_SET) == -1) {
+ if (lseek (fd, (off_t)0, SEEK_SET) == -1
+ || ftruncate (fd, (off_t)0) == -1
+ || (camelfd = dup(fd)) == -1) {
camel_object_unref (message);
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Unable to seek on file: %s\n%s"), file, g_strerror (errno));
- return FALSE;
- }
-
- if (ftruncate (fd, (off_t)0) == -1) {
- camel_object_unref (message);
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Unable to truncate file: %s\n%s"), file, g_strerror (errno));
- return FALSE;
- }
-
- /* dup the fd because we dont want camel to close it when done */
- camelfd = dup(fd);
- if (fd == -1) {
- camel_object_unref (message);
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Unable to copy file descriptor: %s\n%s"), file, g_strerror (errno));
+ e_error_run((GtkWindow *)composer, "mail-composer:no-autosave",
+ file, g_strerror(errno), NULL);
return FALSE;
}
@@ -1336,9 +1295,8 @@ autosave_save_draft (EMsgComposer *composer)
stream = camel_stream_fs_new_with_fd (camelfd);
if (camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (message), stream) == -1
|| camel_stream_close (CAMEL_STREAM (stream)) == -1) {
- e_notice (composer, GTK_MESSAGE_ERROR,
- _("Error autosaving message: %s\n %s"), file, strerror(errno));
-
+ e_error_run((GtkWindow *)composer, "mail-composer:no-autosave",
+ file, g_strerror(errno), NULL);
success = FALSE;
} else {
CORBA_Environment ev;
@@ -1433,18 +1391,8 @@ autosave_manager_query_load_orphans (AutosaveManager *am, GtkWindow *parent)
closedir (dir);
- if (match != NULL) {
- GtkWidget *dialog;
-
- dialog = gtk_message_dialog_new (parent,
- GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
- _("Ximian Evolution has found unsaved messages from a previous session.\n"
- "Would you like to try to recover them?"));
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
- load = gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_YES;
- gtk_widget_destroy (dialog);
- }
+ if (match != NULL)
+ load = e_error_run(parent, "mail-composer:recover-autosave", NULL) == GTK_RESPONSE_YES;
while (match != NULL) {
GSList *next = match->next;
@@ -1588,7 +1536,6 @@ static void
do_exit (EMsgComposer *composer)
{
const char *subject;
- GtkWidget *dialog;
int button;
if (!e_msg_composer_is_dirty (composer) && !e_msg_composer_is_autosaved (composer)) {
@@ -1599,24 +1546,10 @@ do_exit (EMsgComposer *composer)
gdk_window_raise (GTK_WIDGET (composer)->window);
subject = e_msg_composer_hdrs_get_subject (E_MSG_COMPOSER_HDRS (composer->hdrs));
-
- dialog = gtk_message_dialog_new (GTK_WINDOW (composer),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_ERROR, GTK_BUTTONS_NONE,
- _("The message \"%s\" has not been sent.\n\n"
- "Do you wish to save your changes?"),
- subject && *subject ? subject : _("Untitled Message"));
-
- gtk_dialog_add_buttons (GTK_DIALOG (dialog),
- _("_Discard Changes"), GTK_RESPONSE_NO,
- GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
- GTK_STOCK_SAVE, GTK_RESPONSE_YES,
- NULL);
- gtk_window_set_title (GTK_WINDOW (dialog), _("Warning: Modified Message"));
- gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_YES);
- button = gtk_dialog_run (GTK_DIALOG (dialog));
- gtk_widget_destroy (dialog);
-
+
+ button = e_error_run((GtkWindow *)composer, "mail-composer:exit-unsaved",
+ subject && subject[0] ? subject : _("Untitled Message"), NULL);
+
switch (button) {
case GTK_RESPONSE_YES:
/* Save */
diff --git a/composer/mail-composer-errors.xml.in b/composer/mail-composer-errors.xml.in
index 442891d09f..3314a6dc5c 100644
--- a/composer/mail-composer-errors.xml.in
+++ b/composer/mail-composer-errors.xml.in
@@ -1,9 +1,9 @@
<?xml version="1.0"?>
<error-list domain="mail-composer">
- <error id="attach" type="warning">
+ <error id="no-attach" type="error" modal="true">
<_primary>You cannot attach the file `${0}' to this message.</_primary>
- <_secondary>${0}</_secondary>
+ <_secondary>${1}</_secondary>
</error>
<error id="attach-notfile" type="warning">
@@ -23,6 +23,11 @@
<button _label="Recover" response="GTK_RESPONSE_YES"/>
</error>
+ <error id="no-autosave" type="error">
+ <_primary>Could not save to autosave file &quot;{0}&quot;.</_primary>
+ <_secondary>Error saving to autosave because &quot;{1}&quot;.</_secondary>
+ </error>
+
<error id="exit-unsaved" modal="true" type="warning">
<_title>Warning: Modified Message</_title>
<_primary>Are you sure you want to discard the message, titled '{0}', you are composing?</_primary>
@@ -32,4 +37,19 @@
<button _label="Save Message" response="GTK_RESPONSE_YES"/>
</error>
+ <error id="no-build-message" type="error" modal="true">
+ <_primary>Could not create message.</_primary>
+ <_secondary>Because &quot;${0}&quot;, you may need to select different mail options.</_secondary>
+ </error>
+
+ <error id="no-sig-file" type="warning" modal="true">
+ <_primary>Could not read signature file &quot;{0}&quot;.</_primary>
+ <_secondary>Because &quot;${1}&quot;.</_secondary>
+ </error>
+
+ <error id="all-accounts-deleted" type="warning" modal="true">
+ <_primary>All accounts have been removed.</_primary>
+ <_secondary>You need to configure an account before you can compose mail.</_secondary>
+ </error>
+
</error-list>