aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--composer/ChangeLog15
-rw-r--r--composer/Evolution-Composer.idl7
-rw-r--r--composer/e-msg-composer.c23
-rw-r--r--composer/evolution-composer.c7
4 files changed, 36 insertions, 16 deletions
diff --git a/composer/ChangeLog b/composer/ChangeLog
index 4a0b381f40..c455b1a5e6 100644
--- a/composer/ChangeLog
+++ b/composer/ChangeLog
@@ -1,3 +1,18 @@
+2002-03-18 Dan Winship <danw@ximian.com>
+
+ * Evolution-Composer.idl, evolution-composer.c
+ (impl_Composer_show): "Forward as iCalendar" uses set_body, so we
+ can't make the composer un-showable after doing that. So get rid
+ of the "cannot show" exception.
+
+ * e-msg-composer.c (e_msg_composer_set_body): Prepare the composer
+ to be shown in its weird state: Put an explanatory message in the
+ body, then call disable_editor.
+ (disable_editor): Common editor-disabling code - makes the editor
+ and attachment bar insensitive and disables any menu items that
+ could be used to modify them.
+ (e_msg_composer_new_redirect): Use disable_editor here now.
+
2002-03-15 Radek Doulik <rodo@ximian.com>
* e-msg-composer.c: use gtkhtml editor API version 1.1
diff --git a/composer/Evolution-Composer.idl b/composer/Evolution-Composer.idl
index 543e6edd2d..5163197220 100644
--- a/composer/Evolution-Composer.idl
+++ b/composer/Evolution-Composer.idl
@@ -70,8 +70,7 @@ module Evolution {
* Sets the body of the composer to @body. If
* @mime_type is something other than "text/plain" or
* "text/html", the composer will not be editable
- * (calling show() will raise an exception), and the
- * composer will not attempt to assign a non-UTF8
+ * and it will not attempt to assign a non-UTF8
* character set to the data. However, @mime_type may
* include parameters in that case.
**/
@@ -123,9 +122,7 @@ module Evolution {
* Shows the composer and lets the user edit things
* and send the message.
**/
- exception CannotShow {};
- void show ()
- raises (CannotShow);
+ void show ();
/**
diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c
index 66113929d1..54cbe376ed 100644
--- a/composer/e-msg-composer.c
+++ b/composer/e-msg-composer.c
@@ -51,6 +51,7 @@
#include <sys/wait.h>
#include <unistd.h>
#include <gal/unicode/gunicode.h>
+#include <gal/util/e-unicode-i18n.h>
#include <libgnome/gnome-defs.h>
#include <libgnome/gnome-exec.h>
#include <libgnomeui/gnome-app.h>
@@ -3191,6 +3192,16 @@ e_msg_composer_new_with_message (CamelMimeMessage *message)
return new;
}
+static void
+disable_editor (EMsgComposer *composer)
+{
+ gtk_widget_set_sensitive (composer->editor, FALSE);
+ gtk_widget_set_sensitive (composer->attachment_bar, FALSE);
+
+ bonobo_ui_component_set_prop (composer->uic, "/menu/Edit", "sensitive", "0", NULL);
+ bonobo_ui_component_set_prop (composer->uic, "/menu/Format", "sensitive", "0", NULL);
+ bonobo_ui_component_set_prop (composer->uic, "/menu/Insert", "sensitive", "0", NULL);
+}
/**
* e_msg_composer_new_redirect:
@@ -3216,8 +3227,7 @@ e_msg_composer_new_redirect (CamelMimeMessage *message, const char *resent_from)
e_msg_composer_set_headers (composer, resent_from, NULL, NULL, NULL, subject);
- gtk_widget_set_sensitive (composer->editor, FALSE);
- gtk_widget_set_sensitive (composer->attachment_bar, FALSE);
+ disable_editor (composer);
return composer;
}
@@ -3450,12 +3460,17 @@ e_msg_composer_set_body (EMsgComposer *composer, const char *body,
const char *mime_type)
{
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
-
+
+ set_editor_text (composer, U_("<b>(The composer contains a non-text "
+ "message body, which cannot be "
+ "editted.)<b>"));
+ e_msg_composer_set_send_html (composer, FALSE);
+ disable_editor (composer);
+
g_free (composer->mime_body);
composer->mime_body = g_strdup (body);
g_free (composer->mime_type);
composer->mime_type = g_strdup (mime_type);
- composer->send_html = FALSE;
}
diff --git a/composer/evolution-composer.c b/composer/evolution-composer.c
index 1630d97ce3..b6aec0af29 100644
--- a/composer/evolution-composer.c
+++ b/composer/evolution-composer.c
@@ -209,13 +209,6 @@ impl_Composer_show (PortableServer_Servant servant,
bonobo_object = bonobo_object_from_servant (servant);
composer = EVOLUTION_COMPOSER (bonobo_object);
- if (composer->composer->mime_body) {
- CORBA_exception_set (ev, CORBA_USER_EXCEPTION,
- ex_GNOME_Evolution_Composer_CannotShow,
- NULL);
- return;
- }
-
gtk_widget_show (GTK_WIDGET (composer->composer));
}