evolution r34962 - in branches/mbarnes-composer: . composer
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r34962 - in branches/mbarnes-composer: . composer
- Date: Wed, 6 Feb 2008 00:09:08 +0000 (GMT)
Author: mbarnes
Date: Wed Feb 6 00:09:08 2008
New Revision: 34962
URL: http://svn.gnome.org/viewvc/evolution?rev=34962&view=rev
Log:
Just saving progress... disregard the mess.
Added:
branches/mbarnes-composer/composer/e-composer-actions.c
branches/mbarnes-composer/composer/e-composer-actions.h
branches/mbarnes-composer/composer/e-composer-private.h
branches/mbarnes-composer/composer/evolution-composer.ui
Modified:
branches/mbarnes-composer/composer/Makefile.am
branches/mbarnes-composer/composer/e-msg-composer.c
branches/mbarnes-composer/composer/e-msg-composer.h
branches/mbarnes-composer/configure.in
Modified: branches/mbarnes-composer/composer/Makefile.am
==============================================================================
--- branches/mbarnes-composer/composer/Makefile.am (original)
+++ branches/mbarnes-composer/composer/Makefile.am Wed Feb 6 00:09:08 2008
@@ -58,6 +58,8 @@
libcomposer_la_SOURCES = \
$(IDL_GENERATED) \
$(HTML_EDITOR_GENERATED) \
+ e-composer-actions.c \
+ e-composer-actions.h \
e-composer-autosave.c \
e-composer-autosave.h \
e-composer-common.h \
@@ -71,6 +73,7 @@
e-composer-name-header.h \
e-composer-post-header.c \
e-composer-post-header.h \
+ e-composer-private.h \
e-composer-text-header.c \
e-composer-text-header.h \
e-msg-composer-select-file.c \
Added: branches/mbarnes-composer/composer/e-composer-actions.c
==============================================================================
--- (empty file)
+++ branches/mbarnes-composer/composer/e-composer-actions.c Wed Feb 6 00:09:08 2008
@@ -0,0 +1,185 @@
+#include "e-composer-actions.h"
+#include "e-composer-private.h"
+
+#include <e-util/e-error.h>
+
+static void
+action_attach_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+}
+
+static void
+action_close_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+ EComposerHeaderTable *table;
+ const gchar *subject;
+ gint response;
+
+ if (!e_msg_composer_is_dirty (composer) &&
+ !e_msg_composer_is_autosaved (composer)) {
+
+ gtk_widget_destroy (GTK_WIDGET (composer));
+ return;
+ }
+
+ gdk_window_raise (GTK_WIDGET (composer)->window);
+
+ table = e_msg_composer_get_header_table (composer);
+ subject = e_composer_header_table_get_subject (table);
+
+ if (subject == NULL || *subject == '\0')
+ subject = _("Untitled Message");
+
+ response = e_error_run (
+ GTK_WINDOW (composer),
+ "mail-composer:exit-unsaved",
+ subject, NULL);
+
+ switch (response) {
+ case GTK_RESPONSE_YES:
+ gtk_action_activate (ACTION (SAVE_DRAFT));
+ /* fall through */
+
+ case GTK_RESPONSE_NO:
+ gtk_widget_destroy (GTK_WIDGET (composer));
+ break;
+
+ case GTK_RESPONSE_CANCEL:
+ break;
+ }
+}
+
+static void
+action_print_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+}
+
+static void
+action_print_preview_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+}
+
+static void
+action_save_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+ GtkhtmlEditor *editor = GTKHTML_EDITOR (composer);
+ const gchar *filename;
+
+ filename = gtkhtml_editor_get_current_filename (editor);
+ if (filename == NULL) {
+ gtk_action_activate (ACTION (SAVE_AS));
+ return;
+ }
+}
+
+static void
+action_save_as_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+}
+
+static void
+action_save_draft_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+ g_signal_emit_by_name (composer, "save-draft", FALSE);
+ e_msg_composer_unset_changed (composer);
+ e_msg_composer_unset_autosaved (composer);
+}
+
+static void
+action_send_cb (GtkAction *action,
+ EMsgComposer *composer)
+{
+ g_signal_emit_by_name (composer, "send");
+}
+
+static GtkActionEntry entries[] = {
+
+ { "attach",
+ "mail-attachment",
+ N_("_Attachment..."),
+ "<Control>m",
+ NULL,
+ G_CALLBACK (action_attach_cb) },
+
+ { "close",
+ GTK_STOCK_CLOSE,
+ N_("_Close"),
+ "<Control>w",
+ NULL,
+ G_CALLBACK (action_close_cb) },
+
+ { "print",
+ GTK_STOCK_PRINT,
+ N_("_Print..."),
+ "<Control>p",
+ NULL,
+ G_CALLBACK (action_print_cb) },
+
+ { "print-preview",
+ GTK_STOCK_PRINT_PREVIEW,
+ N_("Print Pre_view"),
+ "<Shift><Control>p",
+ NULL,
+ G_CALLBACK (action_print_preview_cb) },
+
+ { "save",
+ GTK_STOCK_SAVE,
+ N_("_Save"),
+ "<Control>s",
+ NULL,
+ G_CALLBACK (action_save_cb) },
+
+ { "save-as",
+ GTK_STOCK_SAVE_AS,
+ N_("Save _As..."),
+ NULL,
+ NULL,
+ G_CALLBACK (action_save_as_cb) },
+
+ { "save-draft",
+ NULL,
+ N_("Save _Draft"),
+ "<Shift><Control>s",
+ NULL,
+ G_CALLBACK (action_save_draft_cb) },
+
+ { "send",
+ "mail-send",
+ N_("S_end"),
+ "<Control><Return>",
+ NULL,
+ G_CALLBACK (action_send_cb) }
+};
+
+void
+e_msg_composer_actions_init (EMsgComposer *composer)
+{
+ GtkActionGroup *action_group;
+ GtkUIManager *manager;
+
+ g_return_if_fail (E_IS_MSG_COMPOSER (composer));
+
+ manager = gtkhtml_editor_get_ui_manager (GTKHTML_EDITOR (composer));
+
+ /* Composer Actions */
+ action_group = composer->priv->action_group;
+ gtk_action_group_set_translation_domain (
+ action_group, GETTEXT_PACKAGE);
+ gtk_action_group_add_actions (
+ action_group, entries,
+ G_N_ELEMENTS (entries), composer);
+ gtk_ui_manager_insert_action_group (manager, action_group, 0);
+
+ /* Fine Tuning */
+
+ g_object_set (
+ G_OBJECT (ACTION (ATTACH)),
+ "short-label", _("Attach"), NULL);
+}
Added: branches/mbarnes-composer/composer/e-composer-actions.h
==============================================================================
--- (empty file)
+++ branches/mbarnes-composer/composer/e-composer-actions.h Wed Feb 6 00:09:08 2008
@@ -0,0 +1,24 @@
+#ifndef E_COMPOSER_ACTIONS_H
+#define E_COMPOSER_ACTIONS_H
+
+#define E_COMPOSER_ACTION(composer, name) \
+ (gtkhtml_editor_get_action (GTKHTML_EDITOR (composer), (name)))
+
+#define E_COMPOSER_ACTION_ATTACH(composer) \
+ E_COMPOSER_ACTION ((composer), "attach")
+#define E_COMPOSER_ACTION_CLOSE(composer) \
+ E_COMPOSER_ACTION ((composer), "close")
+#define E_COMPOSER_ACTION_PRINT(composer) \
+ E_COMPOSER_ACTION ((composer), "print")
+#define E_COMPOSER_ACTION_PRINT_PREVIEW(composer) \
+ E_COMPOSER_ACTION ((composer), "print-preview")
+#define E_COMPOSER_ACTION_SAVE(composer) \
+ E_COMPOSER_ACTION ((composer), "save")
+#define E_COMPOSER_ACTION_SAVE_AS(composer) \
+ E_COMPOSER_ACTION ((composer), "save-as")
+#define E_COMPOSER_ACTION_SAVE_DRAFT(composer) \
+ E_COMPOSER_ACTION ((composer), "save-draft")
+#define E_COMPOSER_ACTION_SEND(composer) \
+ E_COMPOSER_ACTION ((composer), "send")
+
+#endif /* E_COMPOSER_ACTIONS_H */
Added: branches/mbarnes-composer/composer/e-composer-private.h
==============================================================================
--- (empty file)
+++ branches/mbarnes-composer/composer/e-composer-private.h Wed Feb 6 00:09:08 2008
@@ -0,0 +1,86 @@
+#ifndef E_COMPOSER_PRIVATE_H
+#define E_COMPOSER_PRIVATE_H
+
+#include "e-composer-common.h"
+
+#include <glib/gi18n.h>
+
+#include "e-msg-composer.h"
+#include "e-composer-actions.h"
+#include "e-composer-autosave.h"
+#include "e-composer-header-table.h"
+
+#define E_MSG_COMPOSER_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_MSG_COMPOSER, EMsgComposerPrivate))
+
+/* Shorthand, requires a variable named "composer". */
+#define ACTION(name) (E_COMPOSER_ACTION_##name (composer))
+
+G_BEGIN_DECLS
+
+struct _EMsgComposerPrivate {
+
+ /*** UI Management ***/
+
+ GtkWidget *html_editor;
+ GtkWidget *header_table;
+ GtkActionGroup *action_group;
+
+ gint visible_mask;
+ GPtrArray *extra_hdr_names, *extra_hdr_values;
+
+ GtkWidget *focused_entry;
+
+ GtkWidget *attachment_bar;
+ GtkWidget *attachment_scrolled_window;
+ GtkWidget *attachment_expander;
+ GtkWidget *attachment_expander_label;
+ GtkWidget *attachment_expander_icon;
+ GtkWidget *attachment_expander_num;
+
+ GtkWidget *address_dialog;
+
+ GHashTable *inline_images;
+ GHashTable *inline_images_by_url;
+ GList *current_images;
+
+ gchar *mime_type, *mime_body, *charset;
+
+ guint32 attachment_bar_visible : 1;
+ guint32 send_html : 1;
+ guint32 is_alternative : 1;
+ guint32 pgp_sign : 1;
+ guint32 pgp_encrypt : 1;
+ guint32 smime_sign : 1;
+ guint32 smime_encrypt : 1;
+ guint32 view_from : 1;
+ guint32 view_replyto : 1;
+ guint32 view_to : 1;
+ guint32 view_postto : 1;
+ guint32 view_bcc : 1;
+ guint32 view_cc : 1;
+ guint32 view_subject : 1;
+ guint32 request_receipt : 1;
+ guint32 set_priority : 1;
+ guint32 has_changed : 1;
+ guint32 autosaved : 1;
+
+ guint32 mode_post : 1;
+
+ guint32 in_signature_insert : 1;
+
+ CamelMimeMessage *redirect;
+
+ guint notify_id;
+
+ gboolean send_invoked;
+
+ GtkWidget *saveas; /* saveas async file requester */
+ GtkWidget *load; /* same for load - not used */
+
+};
+
+G_END_DECLS
+
+#endif /* E_COMPOSER_PRIVATE_H */
Modified: branches/mbarnes-composer/composer/e-msg-composer.c
==============================================================================
--- branches/mbarnes-composer/composer/e-msg-composer.c (original)
+++ branches/mbarnes-composer/composer/e-msg-composer.c Wed Feb 6 00:09:08 2008
@@ -68,12 +68,6 @@
#include <libgnomeui/gnome-uidefs.h>
#include <libgnomeui/gnome-window-icon.h>
-#include <bonobo/bonobo-exception.h>
-#include <bonobo/bonobo-moniker-util.h>
-#include <bonobo/bonobo-stream-memory.h>
-#include <bonobo/bonobo-ui-util.h>
-#include <bonobo/bonobo-widget.h>
-
#include <libgnomevfs/gnome-vfs.h>
#include <glade/glade.h>
@@ -119,6 +113,7 @@
#include "e-attachment.h"
#include "e-attachment-bar.h"
#include "e-composer-autosave.h"
+#include "e-composer-private.h"
#include "e-composer-header-table.h"
#include "e-msg-composer-select-file.h"
@@ -173,75 +168,6 @@
E_MSG_COMPOSER_VISIBLE_SUBJECT = (1 << 7)
} EMsgComposerHeaderVisibleFlags;
-struct _EMsgComposerPrivate {
-
-/* Main UIComponent */
- BonoboUIComponent *uic;
-
- /* UIComponent for the non-control GtkEntries */
- BonoboUIComponent *entry_uic;
-
- gint visible_mask;
- GtkWidget *header_table;
- GPtrArray *extra_hdr_names, *extra_hdr_values;
-
- GtkWidget *focused_entry;
-
- GtkWidget *eeditor;
-
- GtkWidget *attachment_bar;
- GtkWidget *attachment_scrolled_window;
- GtkWidget *attachment_expander;
- GtkWidget *attachment_expander_label;
- GtkWidget *attachment_expander_icon;
- GtkWidget *attachment_expander_num;
-
- GtkWidget *address_dialog;
-
- Bonobo_PersistFile persist_file_interface;
- Bonobo_PersistStream persist_stream_interface;
- GNOME_GtkHTML_Editor_Engine eeditor_engine;
- BonoboObject *eeditor_listener;
- GHashTable *inline_images, *inline_images_by_url;
- GList *current_images;
-
- gchar *mime_type, *mime_body, *charset;
-
- guint32 attachment_bar_visible : 1;
- guint32 send_html : 1;
- guint32 is_alternative : 1;
- guint32 pgp_sign : 1;
- guint32 pgp_encrypt : 1;
- guint32 smime_sign : 1;
- guint32 smime_encrypt : 1;
- guint32 view_from : 1;
- guint32 view_replyto : 1;
- guint32 view_to : 1;
- guint32 view_postto : 1;
- guint32 view_bcc : 1;
- guint32 view_cc : 1;
- guint32 view_subject : 1;
- guint32 request_receipt : 1;
- guint32 set_priority : 1;
- guint32 has_changed : 1;
- guint32 autosaved : 1;
-
- guint32 mode_post : 1;
-
- guint32 in_signature_insert : 1;
-
- CamelMimeMessage *redirect;
-
- guint notify_id;
-
- gboolean send_invoked;
- EMMenu *menu;
-
- GtkWidget *saveas; /* saveas async file requester */
- GtkWidget *load; /* same for load - not used */
-
-};
-
enum {
SEND,
SAVE_DRAFT,
@@ -307,6 +233,7 @@
static void handle_multipart_signed (EMsgComposer *composer, CamelMultipart *multipart, gint depth);
static void set_editor_signature (EMsgComposer *composer);
+static void do_exit (EMsgComposer *composer);
/* used by e_msg_composer for showing the help menu item */
static void e_msg_composer_show_help (EMsgComposer *composer);
@@ -341,35 +268,6 @@
return destination_list_to_vector_sized (list, -1);
}
-static GByteArray *
-get_text (Bonobo_PersistStream persist, gchar *format)
-{
- BonoboStream *stream;
- BonoboStreamMem *stream_mem;
- CORBA_Environment ev;
- GByteArray *text;
-
- CORBA_exception_init (&ev);
-
- stream = bonobo_stream_mem_create (NULL, 0, FALSE, TRUE);
- Bonobo_PersistStream_save (persist, (Bonobo_Stream)bonobo_object_corba_objref (BONOBO_OBJECT (stream)),
- format, &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- g_warning ("Exception getting mail '%s'",
- bonobo_exception_get_text (&ev));
- return NULL;
- }
-
- CORBA_exception_free (&ev);
-
- stream_mem = BONOBO_STREAM_MEM (stream);
- text = g_byte_array_new ();
- g_byte_array_append (text, (const guint8 *)stream_mem->buffer, stream_mem->pos);
- bonobo_object_unref (BONOBO_OBJECT (stream));
-
- return text;
-}
-
#define LINE_LEN 72
static CamelTransferEncoding
@@ -682,6 +580,7 @@
static CamelMimeMessage *
build_message (EMsgComposer *composer, gboolean save_html_object_data)
{
+ GtkhtmlEditor *editor;
EMsgComposerPrivate *p = composer->priv;
EAttachmentBar *attachment_bar =
@@ -702,12 +601,12 @@
gchar *charset;
gint i;
+ g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL);
+
+ editor = GTKHTML_EDITOR (composer);
table = e_msg_composer_get_header_table (composer);
account = e_composer_header_table_get_account (table);
- if (p->persist_stream_interface == CORBA_OBJECT_NIL)
- return NULL;
-
/* evil kludgy hack for Redirect */
if (p->redirect) {
build_message_headers (composer, p->redirect, TRUE);
@@ -748,12 +647,13 @@
g_byte_array_append (data, (const guint8 *)p->mime_body, strlen (p->mime_body));
type = camel_content_type_decode (p->mime_type);
} else {
- data = get_text (p->persist_stream_interface, "text/plain");
- if (!data) {
- /* The component has probably died */
- camel_object_unref (CAMEL_OBJECT (new));
- return NULL;
- }
+ gchar *text;
+ gsize length;
+
+ data = g_byte_array_new ();
+ text = gtkhtml_editor_get_text_plain (editor, &length);
+ g_byte_array_append (data, (guint8 *) text, (guint) length);
+ g_free (text);
/* FIXME: we may want to do better than this... */
@@ -790,25 +690,21 @@
camel_content_type_unref (type);
if (p->send_html) {
- CORBA_Environment ev;
+ gchar *text;
+ gsize length;
+
clear_current_images (composer);
- if (save_html_object_data) {
- CORBA_exception_init (&ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "save-data-on", &ev);
- }
- data = get_text (p->persist_stream_interface, "text/html");
- if (save_html_object_data) {
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "save-data-off", &ev);
- CORBA_exception_free (&ev);
- }
+ if (save_html_object_data)
+ gtkhtml_editor_run_command (editor, "save-data-on");
- if (!data) {
- /* The component has probably died */
- camel_object_unref (new);
- camel_object_unref (plain);
- return NULL;
- }
+ data = g_byte_array_new ();
+ text = gtkhtml_editor_get_text_html (editor, &length);
+ g_byte_array_append (data, (guint8 *) text, (guint) length);
+ g_free (text);
+
+ if (save_html_object_data)
+ gtkhtml_editor_run_command (editor, "save-data-off");
html = camel_data_wrapper_new ();
@@ -1000,14 +896,14 @@
if (p->smime_sign
&& (account == NULL || account->smime_sign_key == NULL || account->smime_sign_key[0] == 0)) {
camel_exception_set (&ex, CAMEL_EXCEPTION_SYSTEM,
- _ ("Cannot sign outgoing message: No signing certificate set for this account"));
+ _("Cannot sign outgoing message: No signing certificate set for this account"));
goto exception;
}
if (p->smime_encrypt
&& (account == NULL || account->smime_sign_key == NULL || account->smime_sign_key[0] == 0)) {
camel_exception_set (&ex, CAMEL_EXCEPTION_SYSTEM,
- _ ("Cannot encrypt outgoing message: No encryption certificate set for this account"));
+ _("Cannot encrypt outgoing message: No encryption certificate set for this account"));
goto exception;
}
@@ -1209,58 +1105,22 @@
static void
prepare_engine (EMsgComposer *composer)
{
- CORBA_Environment ev;
- EMsgComposerPrivate *p = composer->priv;
-
- g_return_if_fail (E_IS_MSG_COMPOSER (composer));
+ GConfClient *client;
+ gchar *path;
- /* printf ("prepare_engine\n"); */
+ /* FIXME Move this to msg_composer_init () */
- CORBA_exception_init (&ev);
- p->eeditor_engine = (GNOME_GtkHTML_Editor_Engine) Bonobo_Unknown_queryInterface
- (bonobo_widget_get_objref (BONOBO_WIDGET (p->eeditor)), "IDL:GNOME/GtkHTML/Editor/Engine:1.0", &ev);
- if ((p->eeditor_engine != CORBA_OBJECT_NIL) && (ev._major == CORBA_NO_EXCEPTION)) {
-
- /* printf ("trying set listener\n"); */
- p->eeditor_listener = BONOBO_OBJECT (listener_new (composer));
- if (p->eeditor_listener != NULL)
- GNOME_GtkHTML_Editor_Engine__set_listener (p->eeditor_engine,
- (GNOME_GtkHTML_Editor_Listener)
- bonobo_object_dup_ref
- (bonobo_object_corba_objref (p->eeditor_listener),
- &ev),
- &ev);
-
- if ((ev._major != CORBA_NO_EXCEPTION) || (p->eeditor_listener == NULL)) {
- CORBA_Environment err_ev;
-
- CORBA_exception_init (&err_ev);
-
- Bonobo_Unknown_unref (p->eeditor_engine, &err_ev);
- CORBA_Object_release (p->eeditor_engine, &err_ev);
-
- CORBA_exception_free (&err_ev);
-
- p->eeditor_engine = CORBA_OBJECT_NIL;
- g_warning ("Can't establish Editor Listener\n");
- } else {
- gchar *path;
- GConfClient *gconf = gconf_client_get_default ();
-
- path = gconf_client_get_string (gconf, COMPOSER_CURRENT_FOLDER_KEY, NULL);
- g_object_unref (gconf);
-
- /* change it only if we have set path before */
- if (path && *path)
- e_msg_composer_set_attach_path (composer, path);
- g_free (path);
- }
- } else {
- p->eeditor_engine = CORBA_OBJECT_NIL;
- g_warning ("Can't get Editor Engine\n");
- }
+ g_return_if_fail (E_IS_MSG_COMPOSER (composer));
- CORBA_exception_free (&ev);
+ client = gconf_client_get_default ();
+ path = gconf_client_get_string (
+ client, COMPOSER_CURRENT_FOLDER_KEY, NULL);
+ g_object_unref (client);
+
+ /* change it only if we have set path before */
+ if (path && *path)
+ e_msg_composer_set_attach_path (composer, path);
+ g_free (path);
}
/**
@@ -1279,6 +1139,9 @@
g_return_if_fail (composer != NULL);
g_return_if_fail (path != NULL);
+ /* FIXME Listen for property change notifications.
+ * (Remind me again why we can't use GConfBridge?) */
+
gconf = gconf_client_get_default ();
gconf_client_set_string (gconf, COMPOSER_CURRENT_FOLDER_KEY, path, &error);
g_object_unref (gconf);
@@ -1288,18 +1151,7 @@
g_error_free (error);
}
- if (composer->priv->eeditor_engine) {
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- GNOME_GtkHTML_Editor_Engine_setFilePath (composer->priv->eeditor_engine, path, &ev);
-
- CORBA_exception_free (&ev);
- }
-
- /* do this as last thing here, so we can do e_msg_composer_set_attach_path (composer, e_msg_composer_get_attach_path (composer)) */
- g_object_set_data_full ((GObject *) composer, "attach_path", g_strdup (path), g_free);
+ gtkhtml_editor_set_current_folder (GTKHTML_EDITOR (composer), path);
}
/**
@@ -1311,24 +1163,9 @@
const gchar *
e_msg_composer_get_attach_path (EMsgComposer *composer)
{
- g_return_val_if_fail (composer != NULL, g_object_get_data ((GObject *) composer, "attach_path"));
-
- if (composer->priv->eeditor_engine) {
- gchar *str;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- str = GNOME_GtkHTML_Editor_Engine_getFilePath (composer->priv->eeditor_engine, &ev);
- if (ev._major == CORBA_NO_EXCEPTION && str)
- e_msg_composer_set_attach_path (composer, str);
- if (str)
- CORBA_free (str);
-
- CORBA_exception_free (&ev);
- }
+ g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL);
- return g_object_get_data ((GObject *) composer, "attach_path");
+ return gtkhtml_editor_get_current_folder (GTKHTML_EDITOR (composer));
}
static gchar *
@@ -1504,22 +1341,16 @@
}
static void
-set_editor_text (EMsgComposer *composer, const gchar *text, ssize_t len, gint set_signature, gint pad_signature)
+set_editor_text (EMsgComposer *composer,
+ const gchar *text,
+ gboolean set_signature)
{
- EMsgComposerPrivate *p = composer->priv;
- Bonobo_PersistStream persist;
- BonoboStream *stream;
- CORBA_Environment ev;
- Bonobo_Unknown object;
gboolean reply_signature_on_top;
gchar *body = NULL, *html = NULL;
GConfClient *gconf;
- g_return_if_fail (p->persist_stream_interface != CORBA_OBJECT_NIL);
-
- persist = p->persist_stream_interface;
-
- CORBA_exception_init (&ev);
+ g_return_if_fail (E_IS_MSG_COMPOSER (composer));
+ g_return_if_fail (text != NULL);
gconf = gconf_client_get_default ();
@@ -1566,23 +1397,7 @@
body = g_strdup (text);
}
- if (body) {
- len = strlen (body);
- }
-
- stream = bonobo_stream_mem_create (body, len, TRUE, FALSE);
- object = bonobo_object_corba_objref (BONOBO_OBJECT (stream));
- Bonobo_PersistStream_load (persist, (Bonobo_Stream) object, "text/html", &ev);
- if (ev._major != CORBA_NO_EXCEPTION) {
- /* FIXME. Some error message. */
- bonobo_object_unref (BONOBO_OBJECT (stream));
- CORBA_exception_free (&ev);
- return;
- }
-
- CORBA_exception_free (&ev);
-
- bonobo_object_unref (BONOBO_OBJECT (stream));
+ gtkhtml_editor_set_text_html (GTKHTML_EDITOR (composer), body, -1);
if (set_signature && !reply_signature_on_top)
e_msg_composer_show_sig_file (composer);
@@ -1599,17 +1414,16 @@
e_expander_set_expanded (E_EXPANDER (p->attachment_expander), show);
if (show)
gtk_label_set_text_with_mnemonic (GTK_LABEL (composer->priv->attachment_expander_label),
- _ ("Hide _Attachment Bar"));
+ _("Hide _Attachment Bar"));
else
gtk_label_set_text_with_mnemonic (GTK_LABEL (composer->priv->attachment_expander_label),
- _ ("Show _Attachment Bar"));
+ _("Show _Attachment Bar"));
}
static void
save (EMsgComposer *composer, const gchar *filename)
{
- EMsgComposerPrivate *p = composer->priv;
- CORBA_Environment ev;
+#if 0 /* GTKHTML-EDITOR */
gint fd;
/* check to see if we already have the file and that we can create it */
@@ -1628,18 +1442,9 @@
} else
close (fd);
- CORBA_exception_init (&ev);
-
- Bonobo_PersistFile_save (p->persist_file_interface, filename, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION) {
- e_error_run ((GtkWindow *)composer, E_ERROR_NO_SAVE_FILE,
- filename, _ ("Unknown reason"));
- } else {
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "saved", &ev);
- e_msg_composer_unset_autosaved (composer);
- }
- CORBA_exception_free (&ev);
+ gtkhtml_editor_run_command (GTKHTML_EDITOR (composer), "saved");
+ e_composer_autosave_set_saved (composer, FALSE);
+#endif /* GTKHTML-EDITOR */
}
static void
@@ -1653,24 +1458,25 @@
{
EMsgComposerPrivate *p = composer->priv;
- e_msg_composer_select_file (composer, &p->saveas, saveas_response, _ ("Save as..."), TRUE);
+ e_msg_composer_select_file (composer, &p->saveas, saveas_response, _("Save as..."), TRUE);
}
static void
-load (EMsgComposer *composer, const gchar *file_name)
+load (EMsgComposer *composer, const gchar *filename)
{
- EMsgComposerPrivate *p = composer->priv;
- CORBA_Environment ev;
-
- CORBA_exception_init (&ev);
-
- Bonobo_PersistFile_load (p->persist_file_interface, file_name, &ev);
-
- if (ev._major != CORBA_NO_EXCEPTION)
- e_error_run ((GtkWindow *)composer, E_ERROR_NO_LOAD_FILE,
- file_name, _ ("Unknown reason"), NULL);
+ GtkhtmlEditor *editor = GTKHTML_EDITOR (composer);
+ gchar *contents;
+ gsize length;
+ GError *error = NULL;
- CORBA_exception_free (&ev);
+ if (g_file_get_contents (filename, &contents, &length, &error))
+ gtkhtml_editor_set_text_html (editor, contents, length);
+ else {
+ e_error_run (
+ GTK_WINDOW (editor), E_ERROR_NO_LOAD_FILE,
+ filename, error->message, NULL);
+ g_error_free (error);
+ }
}
static EMsgComposer *
@@ -1739,70 +1545,13 @@
e_msg_composer_unset_autosaved (E_MSG_COMPOSER (data));
}
-/* Exit dialog. (Displays a "Save composition to 'Drafts' before exiting?" warning before actually exiting.) */
-
-static void
-do_exit (EMsgComposer *composer)
-{
- EComposerHeaderTable *table;
- const gchar *subject;
- gint button;
-
- if (!e_msg_composer_is_dirty (composer) && !e_msg_composer_is_autosaved (composer)) {
- gtk_widget_destroy (GTK_WIDGET (composer));
- return;
- }
-
- gdk_window_raise (GTK_WIDGET (composer)->window);
-
- table = e_msg_composer_get_header_table (composer);
- subject = e_composer_header_table_get_subject (table);
-
- button = e_error_run ((GtkWindow *)composer, "mail-composer:exit-unsaved",
- subject && subject[0] ? subject : _ ("Untitled Message"), NULL);
-
- switch (button) {
- case GTK_RESPONSE_YES:
- /* Save */
- g_signal_emit (GTK_OBJECT (composer), signals[SAVE_DRAFT], 0, TRUE);
- e_msg_composer_unset_changed (composer);
- e_msg_composer_unset_autosaved (composer);
- gtk_widget_destroy (GTK_WIDGET (composer));
- break;
- case GTK_RESPONSE_NO:
- /* Don't save */
- gtk_widget_destroy (GTK_WIDGET (composer));
- break;
- case GTK_RESPONSE_CANCEL:
- break;
- }
-}
-
/* Menu callbacks. */
static void
-file_open_response (EMsgComposer *composer, const gchar *name)
-{
- load (composer, name);
-}
-
-static void
-menu_file_open_cb (BonoboUIComponent *uic,
- gpointer data,
- const gchar *path)
-{
- EMsgComposer *composer = E_MSG_COMPOSER (data);
- EMsgComposerPrivate *p = composer->priv;
-
- /* NB: This function is never used anymore */
-
- e_msg_composer_select_file (composer, &p->load, file_open_response, _ ("Open File"), FALSE);
-}
-
-static void
menu_file_save_cb (BonoboUIComponent *uic,
gpointer data,
- const gchar *path)
+ const char *path)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposer *composer = E_MSG_COMPOSER (data);
EMsgComposerPrivate *p = composer->priv;
CORBA_char *file_name;
@@ -1819,20 +1568,21 @@
CORBA_free (file_name);
}
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
static void
menu_file_save_as_cb (BonoboUIComponent *uic,
gpointer data,
- const gchar *path)
+ const char *path)
{
- saveas (E_MSG_COMPOSER (data));
+ saveas (E_MSG_COMPOSER(data));
}
static void
menu_file_send_cb (BonoboUIComponent *uic,
gpointer data,
- const gchar *path)
+ const char *path)
{
g_signal_emit (GTK_OBJECT (data), signals[SEND], 0);
}
@@ -1840,7 +1590,7 @@
static void
menu_file_close_cb (BonoboUIComponent *uic,
gpointer data,
- const gchar *path)
+ const char *path)
{
EMsgComposer *composer;
@@ -1852,7 +1602,7 @@
static void
menu_help_cb (BonoboUIComponent *uic,
gpointer data,
- const gchar *path)
+ const char *path)
{
EMsgComposer *composer = (EMsgComposer *) data;
@@ -1861,7 +1611,7 @@
static void
-add_to_bar (EMsgComposer *composer, GSList *names, gint is_inline)
+add_to_bar (EMsgComposer *composer, GSList *names, int is_inline)
{
EMsgComposerPrivate *p = composer->priv;
@@ -1885,18 +1635,18 @@
static void
menu_file_add_attachment_cb (BonoboUIComponent *uic,
gpointer data,
- const gchar *path)
+ const char *path)
{
EMsgComposer *composer = E_MSG_COMPOSER (data);
EMsgComposerPrivate *p = composer->priv;
EMsgComposer *toplevel = E_MSG_COMPOSER (gtk_widget_get_toplevel (GTK_WIDGET (p->attachment_bar)));
- GtkWidget **attachment_selector = e_attachment_bar_get_selector (E_ATTACHMENT_BAR (p->attachment_bar));
+ GtkWidget **attachment_selector = e_attachment_bar_get_selector (E_ATTACHMENT_BAR(p->attachment_bar));
e_msg_composer_select_file_attachments (toplevel, attachment_selector, add_to_bar);
}
static void
-menu_edit_cut_cb (BonoboUIComponent *uic, gpointer data, const gchar *path)
+menu_edit_cut_cb (BonoboUIComponent *uic, gpointer data, const char *path)
{
EMsgComposer *composer = data;
EMsgComposerPrivate *p = composer->priv;
@@ -1912,7 +1662,7 @@
}
static void
-menu_edit_copy_cb (BonoboUIComponent *uic, gpointer data, const gchar *path)
+menu_edit_copy_cb (BonoboUIComponent *uic, gpointer data, const char *path)
{
EMsgComposer *composer = data;
EMsgComposerPrivate *p = composer->priv;
@@ -1928,7 +1678,7 @@
}
static void
-menu_edit_paste_cb (BonoboUIComponent *uic, gpointer data, const gchar *path)
+menu_edit_paste_cb (BonoboUIComponent *uic, gpointer data, const char *path)
{
EMsgComposer *composer = data;
EMsgComposerPrivate *p = composer->priv;
@@ -1944,7 +1694,7 @@
}
static void
-menu_send_options_cb (BonoboUIComponent *component, gpointer data, const gchar *path)
+menu_send_options_cb (BonoboUIComponent *component, gpointer data, const char *path)
{
EMEvent *e = em_event_peek ();
EMEventTargetComposer *target;
@@ -1959,7 +1709,7 @@
}
static void
-menu_edit_select_all_cb (BonoboUIComponent *uic, gpointer data, const gchar *path)
+menu_edit_select_all_cb (BonoboUIComponent *uic, gpointer data, const char *path)
{
EMsgComposer *composer = data;
EMsgComposerPrivate *p = composer->priv;
@@ -1976,8 +1726,9 @@
}
static void
-menu_edit_delete_all_cb (BonoboUIComponent *uic, gpointer data, const gchar *path)
+menu_edit_delete_all_cb (BonoboUIComponent *uic, gpointer data, const char *path)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposer *composer = E_MSG_COMPOSER (data);
EMsgComposerPrivate *p = composer->priv;
CORBA_Environment ev;
@@ -2003,13 +1754,14 @@
CORBA_exception_free (&ev);
/* printf ("delete all\n"); */
+#endif /* GTKHTML-EDITOR */
}
static void
menu_format_html_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
@@ -2021,9 +1773,9 @@
static void
menu_security_pgp_sign_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer composer)
{
@@ -2035,9 +1787,9 @@
static void
menu_security_pgp_encrypt_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer composer)
{
@@ -2049,9 +1801,9 @@
static void
menu_security_smime_sign_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer composer)
{
@@ -2063,9 +1815,9 @@
static void
menu_security_smime_encrypt_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer composer)
{
@@ -2078,9 +1830,9 @@
static void
menu_view_from_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2091,9 +1843,9 @@
static void
menu_view_replyto_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2104,9 +1856,9 @@
static void
menu_view_to_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2117,9 +1869,9 @@
static void
menu_view_postto_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2130,9 +1882,9 @@
static void
menu_view_cc_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2143,9 +1895,9 @@
static void
menu_view_bcc_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2156,9 +1908,9 @@
static void
menu_insert_receipt_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2169,9 +1921,9 @@
static void
menu_insert_priority_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2182,9 +1934,9 @@
static void
menu_changed_charset_cb (BonoboUIComponent *component,
- const gchar *path,
+ const char *path,
Bonobo_UIComponent_EventType type,
- const gchar *state,
+ const char *state,
gpointer user_data)
{
if (type != Bonobo_UIComponent_STATE_CHANGED)
@@ -2202,7 +1954,6 @@
static BonoboUIVerb verbs [] = {
- BONOBO_UI_VERB ("FileOpen", menu_file_open_cb),
BONOBO_UI_VERB ("FileSave", menu_file_save_cb),
BONOBO_UI_VERB ("FileSaveAs", menu_file_save_as_cb),
BONOBO_UI_VERB ("FileSaveDraft", menu_file_save_draft_cb),
@@ -2234,15 +1985,17 @@
E_PIXMAP_END
};
+
static void
setup_ui (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
EMMenuTargetWidget *target;
EMsgComposerPrivate *p = composer->priv;
BonoboUIContainer *container;
gboolean hide_smime;
- gchar *charset;
- gchar *xmlfile;
+ char *charset;
+ char *xmlfile;
container = bonobo_window_get_ui_container (BONOBO_WINDOW (composer));
@@ -2409,6 +2162,7 @@
target = em_menu_target_new_widget (p->menu, (GtkWidget *)composer);
e_menu_update_target ((EMenu *)p->menu, target);
e_menu_activate ((EMenu *)p->menu, p->uic, TRUE);
+#endif /* GTKHTML-EDITOR */
}
@@ -2444,6 +2198,7 @@
changes on close */
e_msg_composer_set_changed (composer);
}
+
static void
attachment_expander_activate_cb (EExpander *expander,
void *data)
@@ -2454,11 +2209,12 @@
/* Update the expander label */
if (show)
gtk_label_set_text_with_mnemonic (GTK_LABEL (composer->priv->attachment_expander_label),
- _ ("Hide _Attachment Bar"));
+ _("Hide _Attachment Bar"));
else
gtk_label_set_text_with_mnemonic (GTK_LABEL (composer->priv->attachment_expander_label),
- _ ("Show _Attachment Bar"));
- }
+ _("Show _Attachment Bar"));
+}
+
static void
subject_changed_cb (EMsgComposer *composer)
{
@@ -2469,7 +2225,7 @@
subject = e_composer_header_table_get_subject (table);
if (subject == NULL || *subject == '\0')
- subject = _ ("Compose Message");
+ subject = _("Compose Message");
gtk_window_set_title (GTK_WINDOW (composer), subject);
}
@@ -2480,7 +2236,7 @@
};
static void
-update_auto_recipients (EComposerHeaderTable *table, gint mode, const gchar *auto_addrs)
+update_auto_recipients (EComposerHeaderTable *table, int mode, const char *auto_addrs)
{
EDestination *dest, **destv = NULL;
CamelInternetAddress *iaddr;
@@ -2663,11 +2419,13 @@
CORBA_exception_init (&ev);
+#if 0 /* GTKHTML-EDITOR */
if (p->menu) {
e_menu_update_target ((EMenu *)p->menu, NULL);
g_object_unref (p->menu);
p->menu = NULL;
}
+#endif
if (p->load) {
gtk_widget_destroy (p->load);
@@ -2679,6 +2437,7 @@
p->saveas = NULL;
}
+#if 0 /* GTKHTML-EDITOR */
if (p->uic) {
bonobo_object_unref (BONOBO_OBJECT (p->uic));
p->uic = NULL;
@@ -2688,6 +2447,7 @@
bonobo_object_unref (BONOBO_OBJECT (p->entry_uic));
p->entry_uic = NULL;
}
+#endif
/* FIXME? I assume the Bonobo widget will get destroyed
normally? */
@@ -2708,6 +2468,7 @@
g_object_unref (gconf);
}
+#if 0 /* GTKHTML-EDITOR */
if (p->persist_stream_interface != CORBA_OBJECT_NIL) {
Bonobo_Unknown_unref (p->persist_stream_interface, &ev);
CORBA_Object_release (p->persist_stream_interface, &ev);
@@ -2732,6 +2493,7 @@
bonobo_object_unref (p->eeditor_listener);
p->eeditor_listener = NULL;
}
+#endif
/* Chain up to parent's destroy () method. */
GTK_OBJECT_CLASS (parent_class)->destroy (object);
@@ -2755,9 +2517,9 @@
/* GtkWidget methods. */
-static gint
+static int
msg_composer_delete_event (GtkWidget *widget,
- GdkEventAny *event)
+ GdkEventAny *event)
{
do_exit (E_MSG_COMPOSER (widget));
@@ -2768,23 +2530,23 @@
attach_message (EMsgComposer *composer, CamelMimeMessage *msg)
{
CamelMimePart *mime_part;
- const gchar *subject;
+ const char *subject;
EMsgComposerPrivate *p = composer->priv;
mime_part = camel_mime_part_new ();
camel_mime_part_set_disposition (mime_part, "inline");
subject = camel_mime_message_get_subject (msg);
if (subject) {
- gchar *desc = g_strdup_printf (_ ("Attached message - %s"), subject);
+ char *desc = g_strdup_printf (_("Attached message - %s"), subject);
camel_mime_part_set_description (mime_part, desc);
g_free (desc);
} else
- camel_mime_part_set_description (mime_part, _ ("Attached message"));
+ camel_mime_part_set_description (mime_part, _("Attached message"));
camel_medium_set_content_object ((CamelMedium *)mime_part, (CamelDataWrapper *)msg);
camel_mime_part_set_content_type (mime_part, "message/rfc822");
- e_attachment_bar_attach_mime_part (E_ATTACHMENT_BAR (p->attachment_bar), mime_part);
+ e_attachment_bar_attach_mime_part (E_ATTACHMENT_BAR(p->attachment_bar), mime_part);
camel_object_unref (mime_part);
}
@@ -2799,12 +2561,12 @@
guint info;
guint time;
- guint move:1;
- guint moved:1;
- guint aborted:1;
+ unsigned int move:1;
+ unsigned int moved:1;
+ unsigned int aborted:1;
};
-gint
+int
e_msg_composer_get_remote_download_count (EMsgComposer *composer)
{
EMsgComposerPrivate *p = composer->priv;
@@ -2813,7 +2575,7 @@
}
static gchar *
-attachment_guess_mime_type (const gchar *file_name)
+attachment_guess_mime_type (const char *file_name)
{
GnomeVFSFileInfo *info;
GnomeVFSResult result;
@@ -2835,12 +2597,12 @@
static void
drop_action (EMsgComposer *composer, GdkDragContext *context, guint32 action, GtkSelectionData *selection, guint info, guint time, gboolean html_dnd)
{
- gchar *tmp, *str, **urls;
+ char *tmp, *str, **urls;
CamelMimePart *mime_part;
CamelStream *stream;
CamelMimeMessage *msg;
- gchar *content_type;
- gint i, success = FALSE, delete = FALSE;
+ char *content_type;
+ int i, success = FALSE, delete = FALSE;
EMsgComposerPrivate *p = composer->priv;
switch (info) {
@@ -2911,7 +2673,7 @@
break;
case DND_TYPE_X_UID_LIST: {
GPtrArray *uids;
- gchar *inptr, *inend;
+ char *inptr, *inend;
CamelFolder *folder;
CamelException ex = CAMEL_EXCEPTION_INITIALISER;
@@ -2922,7 +2684,7 @@
inptr = (char*)selection->data;
inend = (char*)(selection->data + selection->length);
while (inptr < inend) {
- gchar *start = inptr;
+ char *start = inptr;
while (inptr < inend && *inptr)
inptr++;
@@ -2943,7 +2705,7 @@
attach_message (composer, msg);
} else {
CamelMultipart *mp = camel_multipart_new ();
- gchar *desc;
+ char *desc;
camel_data_wrapper_set_mime_type ((CamelDataWrapper *)mp, "multipart/digest");
camel_multipart_set_boundary (mp, NULL);
@@ -2968,7 +2730,7 @@
desc = g_strdup_printf (ngettext ("Attached message", "%d attached messages", uids->len), uids->len);
camel_mime_part_set_description (mime_part, desc);
g_free (desc);
- e_attachment_bar_attach_mime_part (E_ATTACHMENT_BAR (p->attachment_bar), mime_part);
+ e_attachment_bar_attach_mime_part (E_ATTACHMENT_BAR(p->attachment_bar), mime_part);
camel_object_unref (mime_part);
camel_object_unref (mp);
}
@@ -2976,7 +2738,7 @@
delete = action == GDK_ACTION_MOVE;
fail:
if (camel_exception_is_set (&ex)) {
- gchar *name;
+ char *name;
camel_object_get (folder, NULL, CAMEL_FOLDER_NAME, &name, NULL);
e_error_run ((GtkWindow *)composer, "mail-composer:attach-nomessages",
@@ -3000,7 +2762,7 @@
break;
}
- if (e_attachment_bar_get_num_attachments (E_ATTACHMENT_BAR (p->attachment_bar)))
+ if (e_attachment_bar_get_num_attachments (E_ATTACHMENT_BAR(p->attachment_bar)))
show_attachments (composer, TRUE);
gtk_drag_finish (context, success, delete, time);
@@ -3028,10 +2790,10 @@
}
static EPopupItem drop_popup_menu[] = {
- { E_POPUP_ITEM, "00.emc.02", N_ ("_Copy"), drop_popup_copy, NULL, "mail-copy", 0 },
- { E_POPUP_ITEM, "00.emc.03", N_ ("_Move"), drop_popup_move, NULL, "mail-move", 0 },
+ { E_POPUP_ITEM, "00.emc.02", N_("_Copy"), drop_popup_copy, NULL, "mail-copy", 0 },
+ { E_POPUP_ITEM, "00.emc.03", N_("_Move"), drop_popup_move, NULL, "mail-move", 0 },
{ E_POPUP_BAR, "10.emc" },
- { E_POPUP_ITEM, "99.emc.00", N_ ("Cancel _Drag"), drop_popup_cancel, NULL, NULL, 0 },
+ { E_POPUP_ITEM, "99.emc.00", N_("Cancel _Drag"), drop_popup_cancel, NULL, NULL, 0 },
};
static void
@@ -3050,7 +2812,7 @@
static void
drag_data_received (GtkWidget *w, GdkDragContext *context,
- gint x, gint y, GtkSelectionData *selection,
+ int x, int y, GtkSelectionData *selection,
guint info, guint time,
EMsgComposer *composer)
{
@@ -3061,10 +2823,10 @@
EMPopup *emp;
GSList *menus = NULL;
GtkMenu *menu;
- gint i;
+ int i;
struct _drop_data *m;
- m = g_malloc0 (sizeof (*m));
+ m = g_malloc0(sizeof (*m));
m->context = context;
g_object_ref (context);
m->composer = composer;
@@ -3072,13 +2834,13 @@
m->action = context->action;
m->info = info;
m->time = time;
- m->selection = g_malloc0 (sizeof (*m->selection));
+ m->selection = g_malloc0(sizeof (*m->selection));
m->selection->data = g_malloc (selection->length);
memcpy (m->selection->data, selection->data, selection->length);
m->selection->length = selection->length;
emp = em_popup_new ("org.gnome.evolution.mail.composer.popup.drop");
- for (i = 0; i < G_N_ELEMENTS (drop_popup_menu); i++)
+ for (i=0;i<sizeof (drop_popup_menu)/sizeof (drop_popup_menu[0]);i++)
menus = g_slist_append (menus, &drop_popup_menu[i]);
e_popup_add_items ((EPopup *)emp, menus, NULL, drop_popup_free, m);
@@ -3097,11 +2859,11 @@
GdkDragAction action, actions = 0;
for (targets = context->targets; targets; targets = targets->next) {
- gint ii;
+ int i;
- for (ii = 0; ii < G_N_ELEMENTS (drag_info); ii++)
- if (targets->data == (gpointer) drag_info[ii].atom)
- actions |= drag_info[ii].actions;
+ for (i=0;i<sizeof (drag_info)/sizeof (drag_info[0]);i++)
+ if (targets->data == (gpointer)drag_info[i].atom)
+ actions |= drag_info[i].actions;
}
actions &= context->actions;
@@ -3181,13 +2943,10 @@
composer->priv->extra_hdr_names = g_ptr_array_new ();
composer->priv->extra_hdr_values = g_ptr_array_new ();
- composer->priv->persist_file_interface = CORBA_OBJECT_NIL;
- composer->priv->persist_stream_interface = CORBA_OBJECT_NIL;
-
- composer->priv->eeditor_engine = CORBA_OBJECT_NIL;
composer->priv->inline_images = inline_images;
composer->priv->inline_images_by_url = inline_images_by_url;
+#if 0 /* GTKHTML-EDITOR */
/** @HookPoint-EMMenu: Main Mail Menu
* @Id: org.gnome.evolution.mail.composer
* @Class: org.gnome.evolution.mail.bonobomenu:1.0
@@ -3196,8 +2955,8 @@
* The main menu of the composer window. The widget of the
* target will point to the EMsgComposer object.
*/
- composer->priv->menu =
- em_menu_new ("org.gnome.evolution.mail.composer");
+ composer->priv->menu = em_menu_new ("org.gnome.evolution.mail.composer");
+#endif
}
GType
@@ -3220,14 +2979,14 @@
};
type = g_type_register_static (
- BONOBO_TYPE_WINDOW, "EMsgComposer", &type_info, 0);
+ GTKHTML_TYPE_EDITOR, "EMsgComposer", &type_info, 0);
}
return type;
}
static void
-e_msg_composer_load_config (EMsgComposer *composer, gint visible_mask)
+e_msg_composer_load_config (EMsgComposer *composer, int visible_mask)
{
GConfClient *gconf;
EMsgComposerPrivate *p = composer->priv;
@@ -3271,14 +3030,44 @@
g_object_unref (gconf);
}
+static int
+e_msg_composer_get_visible_flags (EMsgComposer *composer)
+{
+ int flags = 0;
+ EMsgComposerPrivate *p = composer->priv;
+
+ if (p->view_from)
+ flags |= E_MSG_COMPOSER_VISIBLE_FROM;
+ if (p->view_replyto)
+ flags |= E_MSG_COMPOSER_VISIBLE_REPLYTO;
+ if (p->view_to)
+ flags |= E_MSG_COMPOSER_VISIBLE_TO;
+ if (p->view_postto)
+ flags |= E_MSG_COMPOSER_VISIBLE_POSTTO;
+ if (p->view_cc)
+ flags |= E_MSG_COMPOSER_VISIBLE_CC;
+ if (p->view_bcc)
+ flags |= E_MSG_COMPOSER_VISIBLE_BCC;
+ if (p->view_subject)
+ flags |= E_MSG_COMPOSER_VISIBLE_SUBJECT;
+
+ /*
+ * Until we have a GUI way, lets make sure that
+ * even if the user screws up, we will do the right
+ * thing (screws up == edit the config file manually
+ * and screw up).
+ */
+ flags |= E_MSG_COMPOSER_VISIBLE_SUBJECT;
+ return flags;
+}
+
+
static void
map_default_cb (EMsgComposer *composer, gpointer user_data)
{
EComposerHeaderTable *table;
GtkWidget *widget;
- CORBA_Environment ev;
const gchar *text;
- EMsgComposerPrivate *p = composer->priv;
table = e_msg_composer_get_header_table (composer);
@@ -3290,6 +3079,7 @@
if (!text || text[0] == '\0') {
gtk_widget_grab_focus (widget);
+
return;
}
@@ -3305,10 +3095,7 @@
}
/* Jump to the editor as a last resort. */
-
- CORBA_exception_init (&ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "grab-focus", &ev);
- CORBA_exception_free (&ev);
+ gtkhtml_editor_run_command (GTKHTML_EDITOR (composer), "grab-focus");
}
static void
@@ -3319,12 +3106,11 @@
all_composers = g_slist_remove (all_composers, composer);
}
-static gint
+static int
composer_key_pressed (EMsgComposer *composer, GdkEventKey *event, gpointer user_data)
{
GtkWidget *widget;
EComposerHeaderTable *table;
- EMsgComposerPrivate *p = composer->priv;
table = e_msg_composer_get_header_table (composer);
widget = e_composer_header_table_get_header (
@@ -3343,10 +3129,7 @@
g_signal_stop_emission_by_name (composer, "key-press-event");
return TRUE;
} else if ((event->keyval == GDK_Tab) && (gtk_widget_is_focus (widget))) {
- CORBA_Environment ev;
- CORBA_exception_init (&ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "grab-focus", &ev);
- CORBA_exception_free (&ev);
+ gtkhtml_editor_run_command (GTKHTML_EDITOR (composer), "grab-focus");
g_signal_stop_emission_by_name (composer, "key-press-event");
return TRUE;
}
@@ -3367,10 +3150,11 @@
static gboolean
composer_entry_focus_in_event_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposer *composer = user_data;
EMsgComposerPrivate *p = composer->priv;
BonoboUIContainer *container;
- gchar *xmlfile;
+ char *xmlfile;
p->focused_entry = widget;
@@ -3388,6 +3172,7 @@
g_free (xmlfile);
bonobo_ui_component_thaw (p->entry_uic, NULL);
+#endif /* GTKHTML-EDITOR */
return FALSE;
}
@@ -3395,6 +3180,7 @@
static gboolean
composer_entry_focus_out_event_cb (GtkWidget *widget, GdkEventFocus *event, gpointer user_data)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposer *composer = user_data;
EMsgComposerPrivate *p = composer->priv;
@@ -3402,6 +3188,7 @@
p->focused_entry = NULL;
bonobo_ui_component_unset_container (p->entry_uic, NULL);
+#endif /* GTKHTML-EDITOR */
return FALSE;
}
@@ -3418,37 +3205,31 @@
entry = e_composer_header_table_get_header (
table, E_COMPOSER_HEADER_SUBJECT)->input_widget;
-
g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
entry = e_composer_header_table_get_header (
table, E_COMPOSER_HEADER_REPLY_TO)->input_widget;
-
g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
entry = e_composer_header_table_get_header (
table, E_COMPOSER_HEADER_TO)->input_widget;
-
g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
entry = e_composer_header_table_get_header (
table, E_COMPOSER_HEADER_CC)->input_widget;
-
g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
entry = e_composer_header_table_get_header (
table, E_COMPOSER_HEADER_BCC)->input_widget;
-
g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
entry = e_composer_header_table_get_header (
table, E_COMPOSER_HEADER_POST_TO)->input_widget;
-
g_signal_connect (entry, "focus_in_event", G_CALLBACK (composer_entry_focus_in_event_cb), composer);
g_signal_connect (entry, "focus_out_event", G_CALLBACK (composer_entry_focus_out_event_cb), composer);
}
@@ -3456,6 +3237,7 @@
static void
composer_settings_update (GConfClient *gconf, guint cnxn_id, GConfEntry *entry, gpointer data)
{
+#if 0 /* GTKHTML-EDITOR */
gboolean bool;
EMsgComposer *composer = data;
EMsgComposerPrivate *p = composer->priv;
@@ -3474,6 +3256,7 @@
bonobo_widget_set_property (BONOBO_WIDGET (p->eeditor),
"InlineSpelling", TC_CORBA_boolean, bool,
NULL);
+#endif /* GTKHTML-EDITOR */
}
static void
@@ -3481,7 +3264,7 @@
{
EMsgComposer *composer = E_MSG_COMPOSER (widget);
GConfClient *gconf;
- gint width, height;
+ int width, height;
gtk_window_get_size (GTK_WINDOW (composer), &width, &height);
@@ -3498,7 +3281,7 @@
{
EAttachmentBar *bar = data;
EMsgComposer *toplevel = E_MSG_COMPOSER (gtk_widget_get_toplevel (GTK_WIDGET (bar)));
- GtkWidget **attachment_selector = e_attachment_bar_get_selector (E_ATTACHMENT_BAR (bar));
+ GtkWidget **attachment_selector = e_attachment_bar_get_selector (E_ATTACHMENT_BAR(bar));
e_msg_composer_select_file_attachments (toplevel, attachment_selector, add_to_bar);
}
@@ -3521,14 +3304,14 @@
/* Popup menu handling. */
static EPopupItem emcab_popups[] = {
- { E_POPUP_ITEM, "10.attach", N_ ("_Remove"), emcab_remove, NULL, GTK_STOCK_REMOVE, EM_POPUP_ATTACHMENTS_MANY },
- { E_POPUP_ITEM, "20.attach", N_ ("_Properties"), emcab_properties, NULL, GTK_STOCK_PROPERTIES, EM_POPUP_ATTACHMENTS_ONE },
+ { E_POPUP_ITEM, "10.attach", N_("_Remove"), emcab_remove, NULL, GTK_STOCK_REMOVE, EM_POPUP_ATTACHMENTS_MANY },
+ { E_POPUP_ITEM, "20.attach", N_("_Properties"), emcab_properties, NULL, GTK_STOCK_PROPERTIES, EM_POPUP_ATTACHMENTS_ONE },
{ E_POPUP_BAR, "30.attach.00", NULL, NULL, NULL, NULL, EM_POPUP_ATTACHMENTS_MANY|EM_POPUP_ATTACHMENTS_ONE },
- { E_POPUP_ITEM, "30.attach.01", N_ ("_Add attachment..."), emcab_add, NULL, GTK_STOCK_ADD, 0 },
+ { E_POPUP_ITEM, "30.attach.01", N_("_Add attachment..."), emcab_add, NULL, GTK_STOCK_ADD, 0 },
};
static void
-emcab_popup_position (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, gpointer user_data)
+emcab_popup_position (GtkMenu *menu, int *x, int *y, gboolean *push_in, gpointer user_data)
{
EAttachmentBar *bar = user_data;
GnomeIconList *icon_list = user_data;
@@ -3541,7 +3324,7 @@
if (selection == NULL)
return;
- image = gnome_icon_list_get_icon_pixbuf_item (icon_list, GPOINTER_TO_INT (selection->data));
+ image = gnome_icon_list_get_icon_pixbuf_item (icon_list, GPOINTER_TO_INT(selection->data));
if (image == NULL)
return;
@@ -3559,17 +3342,17 @@
/* if id != -1, then use it as an index for target of the popup */
static void
-emcab_popup (EAttachmentBar *bar, GdkEventButton *event, gint id)
+emcab_popup (EAttachmentBar *bar, GdkEventButton *event, int id)
{
GSList *attachments = NULL, *menus = NULL;
- gint i;
+ int i;
EMPopup *emp;
EMPopupTargetAttachments *t;
GtkMenu *menu;
attachments = e_attachment_bar_get_attachment (bar, id);
- for (i = 0; i < G_N_ELEMENTS (emcab_popups); i++)
+ for (i=0;i<sizeof (emcab_popups)/sizeof (emcab_popups[0]);i++)
menus = g_slist_prepend (menus, &emcab_popups[i]);
/** @HookPoint-EMPopup: Composer Attachment Bar Context Menu
@@ -3599,12 +3382,12 @@
}
-static gint
+static int
button_press_event (GtkWidget *widget, GdkEventButton *event)
{
EAttachmentBar *bar = (EAttachmentBar *)widget;
- GnomeIconList *icon_list = GNOME_ICON_LIST (widget);
- gint icon_number;
+ GnomeIconList *icon_list = GNOME_ICON_LIST(widget);
+ int icon_number;
if (event->button != 3)
return FALSE;
@@ -3623,7 +3406,7 @@
static gint
key_press_event (GtkWidget *widget, GdkEventKey *event)
{
- EAttachmentBar *bar = E_ATTACHMENT_BAR (widget);
+ EAttachmentBar *bar = E_ATTACHMENT_BAR(widget);
if (event->keyval == GDK_Delete) {
e_attachment_bar_remove_selected (bar);
@@ -3633,38 +3416,31 @@
return FALSE;
}
+/* Exit dialog. (Displays a "Save composition to 'Drafts' before exiting?" warning before actually exiting.) */
+
static void
-update_header_visibility (EMsgComposer *composer)
+do_exit (EMsgComposer *composer)
{
EComposerHeaderTable *table;
- gboolean visible[E_COMPOSER_NUM_HEADERS];
- gint visible_mask, ii;
+ const gchar *subject;
+ gint button;
- table = e_msg_composer_get_header_table (composer);
- visible_mask = composer->priv->visible_mask;
+ if (!e_msg_composer_is_dirty (composer) && !e_msg_composer_is_autosaved (composer)) {
+ gtk_widget_destroy (GTK_WIDGET (composer));
+ return;
+ }
- visible[E_COMPOSER_HEADER_FROM] = composer->priv->view_from;
- visible[E_COMPOSER_HEADER_REPLY_TO] = composer->priv->view_replyto;
- visible[E_COMPOSER_HEADER_TO] = composer->priv->view_to;
- visible[E_COMPOSER_HEADER_CC] = composer->priv->view_cc;
- visible[E_COMPOSER_HEADER_BCC] = composer->priv->view_bcc;
- visible[E_COMPOSER_HEADER_POST_TO] = composer->priv->view_postto;
- visible[E_COMPOSER_HEADER_SUBJECT] = composer->priv->view_subject;
-
- /* Overrides */
- visible[E_COMPOSER_HEADER_SUBJECT] = TRUE;
-
- /* "To" is always visible if we're not doing "Post-To" */
- if (!(visible_mask & E_MSG_COMPOSER_VISIBLE_POSTTO))
- visible[E_COMPOSER_HEADER_TO] = TRUE;
- else
- visible[E_COMPOSER_HEADER_POST_TO] = TRUE;
+ gdk_window_raise (GTK_WIDGET (composer)->window);
- for (ii = 0; ii < G_N_ELEMENTS (visible); ii++)
- e_composer_header_table_set_header_visible (
- table, ii, visible[ii]);
+ table = e_msg_composer_get_header_table (composer);
+ subject = e_composer_header_table_get_subject (table);
+
+ button = e_error_run ((GtkWindow *)composer, "mail-composer:exit-unsaved",
+ subject && subject[0] ? subject : _ ("Untitled Message"), NULL);
+ e_composer_autosave_register (composer);
+ e_msg_composer_check_autosave (GTK_WINDOW (composer));
- gtk_widget_queue_resize (GTK_WIDGET (table));
+ composer->priv->has_changed = FALSE;
}
static EMsgComposer *
@@ -3673,20 +3449,14 @@
EMsgComposer *composer;
EComposerHeaderTable *table;
GtkWidget *vbox, *expander_hbox;
- Bonobo_Unknown editor_server;
- CORBA_Environment ev;
GConfClient *gconf;
GList *icon_list;
- BonoboControlFrame *control_frame;
- GtkWidget *html_widget = NULL;
- gpointer servant;
- BonoboObject *impl;
EMsgComposerPrivate *p;
- composer = g_object_new (E_TYPE_MSG_COMPOSER, "win_name", _ ("Compose Message"), NULL);
+ composer = g_object_new (E_TYPE_MSG_COMPOSER, "win_name", _("Compose Message"), NULL);
p = composer->priv;
- gtk_window_set_title ((GtkWindow *) composer, _ ("Compose Message"));
+ gtk_window_set_title ((GtkWindow *) composer, _("Compose Message"));
all_composers = g_slist_prepend (all_composers, composer);
@@ -3728,6 +3498,7 @@
/* Configure header visibility / sensitivity */
+#if 0 /* GTKHTML-EDITOR */
bonobo_ui_component_set_prop (
p->uic, "/commands/ViewTo", "sensitive",
visible_mask & E_MSG_COMPOSER_VISIBLE_TO ? "0" : "1", NULL);
@@ -3735,6 +3506,7 @@
p->uic, "/commands/ViewPostTo", "sensitive",
visible_mask & E_MSG_COMPOSER_VISIBLE_POSTTO ? "0" : "1", NULL);
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
gtk_box_set_spacing (GTK_BOX (vbox), 6);
gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (table), FALSE, FALSE, 0);
@@ -3763,29 +3535,13 @@
table, "notify::subject",
G_CALLBACK (e_msg_composer_set_changed), composer);
g_signal_connect_swapped (
- table, "notify::signature",
- G_CALLBACK (e_msg_composer_show_sig_file), composer);
+ table, "notify::signature",
+ G_CALLBACK (e_msg_composer_show_sig_file), composer);
gtk_widget_show (GTK_WIDGET (table));
account_changed_cb (composer);
- /* Editor component. */
- p->eeditor = bonobo_widget_new_control (
- GNOME_GTKHTML_EDITOR_CONTROL_ID,
- bonobo_ui_component_get_container (p->uic));
- if (!p->eeditor) {
- e_error_run (GTK_WINDOW (composer), "mail-composer:no-editor-control", NULL);
- gtk_object_destroy (GTK_OBJECT (composer));
- return NULL;
- }
-
- control_frame = bonobo_widget_get_control_frame (BONOBO_WIDGET (p->eeditor));
- bonobo_control_frame_set_autoactivate (control_frame, TRUE);
-
- /* let the editor know which mode we are in */
- bonobo_widget_set_property (BONOBO_WIDGET (p->eeditor),
- "FormatHTML", TC_CORBA_boolean, p->send_html,
- NULL);
+ gtkhtml_editor_set_html_mode (GTKHTML_EDITOR (composer), p->send_html);
gconf = gconf_client_get_default ();
composer_settings_update (gconf, 0, NULL, composer);
@@ -3799,19 +3555,7 @@
g_signal_connect (composer, "unrealize", G_CALLBACK (e_msg_composer_unrealize), NULL);
g_object_unref (gconf);
- editor_server = bonobo_widget_get_objref (BONOBO_WIDGET (p->eeditor));
-
- /* FIXME: handle exceptions */
- CORBA_exception_init (&ev);
- p->persist_file_interface
- = Bonobo_Unknown_queryInterface (editor_server, "IDL:Bonobo/PersistFile:1.0", &ev);
- p->persist_stream_interface
- = Bonobo_Unknown_queryInterface (editor_server, "IDL:Bonobo/PersistStream:1.0", &ev);
- CORBA_exception_free (&ev);
-
- gtk_box_pack_start (GTK_BOX (vbox), p->eeditor, TRUE, TRUE, 0);
-
- /* Attachment editor, wrapped ginto an EScrollFrame. It's
+ /* Attachment editor, wrapped into an EScrollFrame. It's
hidden in an EExpander. */
p->attachment_scrolled_window = gtk_scrolled_window_new (NULL, NULL);
@@ -3834,7 +3578,7 @@
G_CALLBACK (attachment_bar_changed_cb), composer);
p->attachment_expander_label =
- gtk_label_new_with_mnemonic (_ ("Show _Attachment Bar"));
+ gtk_label_new_with_mnemonic (_("Show _Attachment Bar"));
p->attachment_expander_num = gtk_label_new ("");
gtk_label_set_use_markup (GTK_LABEL (p->attachment_expander_num), TRUE);
gtk_misc_set_alignment (GTK_MISC (p->attachment_expander_label), 0.0, 0.5);
@@ -3864,21 +3608,14 @@
g_signal_connect_after (p->attachment_expander, "activate",
G_CALLBACK (attachment_expander_activate_cb), composer);
+#if 0 /* GTKHTML-EDITOR */
bonobo_window_set_contents (BONOBO_WINDOW (composer), vbox);
+#endif /* GTKHTML-EDITOR */
gtk_widget_show (vbox);
- /* If we show this widget earlier, we lose network transparency. i.e. the
- component appears on the machine evo is running on, ignoring any DISPLAY
- variable. */
- gtk_widget_show (p->eeditor);
-
prepare_engine (composer);
- if (p->eeditor_engine == CORBA_OBJECT_NIL) {
- e_error_run (GTK_WINDOW (composer), "mail-composer:no-editor-control", NULL);
- gtk_object_destroy (GTK_OBJECT (composer));
- return NULL;
- }
+#if 0 /* GTKHTML-EDITOR */
/* The engine would have the GtkHTML widget stored in "html-widget"
* We'll use that to listen for DnD signals
*/
@@ -3890,19 +3627,18 @@
if (html_widget) {
g_signal_connect (html_widget, "drag_data_received", G_CALLBACK (drag_data_received), composer);
}
+#endif /* GTKHTML-EDITOR */
setup_cut_copy_paste (composer);
g_signal_connect (composer, "map", (GCallback) map_default_cb, NULL);
e_composer_autosave_register (composer);
- e_msg_composer_check_autosave (GTK_WINDOW (composer));
p->has_changed = FALSE;
return composer;
}
-
static void
set_editor_signature (EMsgComposer *composer)
{
@@ -3954,7 +3690,7 @@
if (new) {
e_msg_composer_set_send_html (new, send_html);
set_editor_signature (new);
- set_editor_text (new, "", 0, TRUE, TRUE);
+ set_editor_text (new, "", TRUE);
}
return new;
@@ -4012,7 +3748,7 @@
len = GPOINTER_TO_SIZE (g_object_get_data ((GObject *) composer, "body:len"));
if (body) {
if (apply)
- set_editor_text (composer, body, len, FALSE, FALSE);
+ set_editor_text (composer, body, FALSE);
g_object_set_data ((GObject *) composer, "body:text", NULL);
g_free (body);
@@ -4334,6 +4070,7 @@
static void
set_signature_gui (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
CORBA_Environment ev;
EComposerHeaderTable *table;
EMsgComposerPrivate *p = composer->priv;
@@ -4362,6 +4099,7 @@
e_composer_header_table_set_signature (table, signature);
}
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
@@ -4652,6 +4390,7 @@
static void
disable_editor (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
CORBA_Environment ev;
EMsgComposerPrivate *p = composer->priv;
@@ -4664,6 +4403,7 @@
bonobo_ui_component_set_prop (p->uic, "/menu/Edit", "sensitive", "0", NULL);
bonobo_ui_component_set_prop (p->uic, "/menu/Format", "sensitive", "0", NULL);
bonobo_ui_component_set_prop (p->uic, "/menu/Insert", "sensitive", "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
/**
@@ -4864,7 +4604,7 @@
gchar *htmlbody;
htmlbody = camel_text_to_html (body, CAMEL_MIME_FILTER_TOHTML_PRE, 0);
- set_editor_text (composer, htmlbody, -1, FALSE, FALSE);
+ set_editor_text (composer, htmlbody, FALSE);
g_free (htmlbody);
}
}
@@ -4937,7 +4677,7 @@
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
g_return_if_fail (text != NULL);
- set_editor_text (composer, text, len, TRUE, *text == '\0');
+ set_editor_text (composer, text, TRUE);
}
/**
@@ -4960,7 +4700,7 @@
table = e_msg_composer_get_header_table (composer);
- set_editor_text (composer, _ ("<b>(The composer contains a non-text message body, which cannot be edited.)</b>"), -1, FALSE, FALSE);
+ set_editor_text (composer, _("<b>(The composer contains a non-text message body, which cannot be edited.)</b>"), FALSE);
e_msg_composer_set_send_html (composer, FALSE);
disable_editor (composer);
@@ -5309,6 +5049,7 @@
static void
delete_old_signature (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
CORBA_Environment ev;
EMsgComposerPrivate *p = composer->priv;
@@ -5328,6 +5069,7 @@
}
GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "unblock-selection", &ev);
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
@@ -5340,6 +5082,7 @@
void
e_msg_composer_show_sig_file (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
CORBA_Environment ev;
gchar *html;
EMsgComposerPrivate *p = composer->priv;
@@ -5377,6 +5120,7 @@
p->in_signature_insert = FALSE;
}
/* printf ("e_msg_composer_show_sig_file end\n"); */
+#endif /* GTKHTML-EDITOR */
}
@@ -5391,6 +5135,7 @@
e_msg_composer_set_send_html (EMsgComposer *composer,
gboolean send_html)
{
+#if 0 /* GTKHTML-EDITOR */
CORBA_Environment ev;
EMsgComposerPrivate *p = composer->priv;
@@ -5420,6 +5165,7 @@
CORBA_exception_init (&ev);
GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "unblock-redraw", &ev);
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
@@ -5452,6 +5198,7 @@
void
e_msg_composer_set_pgp_sign (EMsgComposer *composer, gboolean pgp_sign)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -5465,6 +5212,7 @@
bonobo_ui_component_set_prop (p->uic, "/commands/SecurityPGPSign",
"state", p->pgp_sign ? "1" : "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
@@ -5496,6 +5244,7 @@
void
e_msg_composer_set_pgp_encrypt (EMsgComposer *composer, gboolean pgp_encrypt)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -5509,6 +5258,7 @@
bonobo_ui_component_set_prop (p->uic, "/commands/SecurityPGPEncrypt",
"state", p->pgp_encrypt ? "1" : "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
@@ -5540,6 +5290,7 @@
void
e_msg_composer_set_smime_sign (EMsgComposer *composer, gboolean smime_sign)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -5553,6 +5304,7 @@
bonobo_ui_component_set_prop (p->uic, "/commands/SecuritySMimeSign",
"state", p->smime_sign ? "1" : "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
@@ -5584,6 +5336,7 @@
void
e_msg_composer_set_smime_encrypt (EMsgComposer *composer, gboolean smime_encrypt)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -5597,6 +5350,7 @@
bonobo_ui_component_set_prop (p->uic, "/commands/SecuritySMimeEncrypt",
"state", p->smime_encrypt ? "1" : "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
@@ -5646,6 +5400,7 @@
void
e_msg_composer_set_view_from (EMsgComposer *composer, gboolean view_from)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
GConfClient *gconf;
@@ -5664,6 +5419,7 @@
g_object_unref (gconf);
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
}
@@ -5695,6 +5451,7 @@
void
e_msg_composer_set_view_replyto (EMsgComposer *composer, gboolean view_replyto)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
GConfClient *gconf;
@@ -5714,6 +5471,7 @@
g_object_unref (gconf);
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
}
@@ -5745,6 +5503,7 @@
void
e_msg_composer_set_view_to (EMsgComposer *composer, gboolean view_to)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
GConfClient *gconf;
@@ -5765,6 +5524,7 @@
}
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
}
@@ -5797,6 +5557,7 @@
void
e_msg_composer_set_view_postto (EMsgComposer *composer, gboolean view_postto)
{
+#if 0 /* GTKHTML-EDITOR */
GConfClient *gconf;
EMsgComposerPrivate *p = composer->priv;
@@ -5817,6 +5578,7 @@
}
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
}
@@ -5849,6 +5611,7 @@
void
e_msg_composer_set_view_cc (EMsgComposer *composer, gboolean view_cc)
{
+#if 0 /* GTKHTML-EDITOR */
GConfClient *gconf;
EMsgComposerPrivate *p = composer->priv;
@@ -5869,6 +5632,7 @@
}
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
}
@@ -5902,6 +5666,7 @@
void
e_msg_composer_set_view_bcc (EMsgComposer *composer, gboolean view_bcc)
{
+#if 0 /* GTKHTML-EDITOR */
GConfClient *gconf;
EMsgComposerPrivate *p = composer->priv;
@@ -5922,6 +5687,7 @@
}
update_header_visibility (composer);
+#endif /* GTKHTML-EDITOR */
}
@@ -5954,6 +5720,7 @@
void
e_msg_composer_set_request_receipt (EMsgComposer *composer, gboolean request_receipt)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -5964,6 +5731,7 @@
p->request_receipt = request_receipt;
bonobo_ui_component_set_prop (p->uic, "/commands/RequestReceipt",
"state", p->request_receipt ? "1" : "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
@@ -5995,6 +5763,7 @@
void
e_msg_composer_set_priority (EMsgComposer *composer, gboolean set_priority)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
@@ -6005,6 +5774,7 @@
p->set_priority= set_priority;
bonobo_ui_component_set_prop (p->uic, "/commands/SetPriority",
"state", p->set_priority ? "1" : "0", NULL);
+#endif /* GTKHTML-EDITOR */
}
CamelInternetAddress *
@@ -6116,6 +5886,7 @@
gboolean
e_msg_composer_is_dirty (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
CORBA_Environment ev;
gboolean rv;
@@ -6127,6 +5898,9 @@
CORBA_exception_free (&ev);
return rv;
+#endif /* GTKHTML-EDITOR */
+
+ return TRUE;
}
/**
@@ -6139,10 +5913,7 @@
void
e_msg_composer_set_autosaved (EMsgComposer *composer)
{
- EMsgComposerPrivate *p = composer->priv;
- g_return_if_fail (E_IS_MSG_COMPOSER (composer));
-
- p->autosaved = TRUE;
+ e_composer_autosave_set_saved (composer, TRUE);
}
@@ -6156,10 +5927,7 @@
void
e_msg_composer_unset_autosaved (EMsgComposer *composer)
{
- EMsgComposerPrivate *p = composer->priv;
- g_return_if_fail (E_IS_MSG_COMPOSER (composer));
-
- p->autosaved = FALSE;
+ e_composer_autosave_set_saved (composer, FALSE);
}
/**
@@ -6170,15 +5938,9 @@
const gchar *
e_msg_composer_get_raw_message_text (EMsgComposer *composer)
{
- GByteArray *data = NULL;
- EMsgComposerPrivate *p = composer->priv;
- g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL);
-
- data = get_text (p->persist_stream_interface, "text/plain");
- if (data)
- return (const gchar *)data->data;
+ g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL);
- return NULL;
+ return gtkhtml_editor_get_text_plain (GTKHTML_EDITOR (composer), NULL);
}
EAttachmentBar*
@@ -6192,10 +5954,7 @@
gboolean
e_msg_composer_is_autosaved (EMsgComposer *composer)
{
- EMsgComposerPrivate *p = composer->priv;
- g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), FALSE);
-
- return p->autosaved;
+ return e_composer_autosave_get_saved (composer);
}
void
@@ -6207,12 +5966,9 @@
void
e_msg_composer_drop_editor_undo (EMsgComposer *composer)
{
- EMsgComposerPrivate *p = composer->priv;
- CORBA_Environment ev;
+ g_return_if_fail (E_IS_MSG_COMPOSER (composer));
- CORBA_exception_init (&ev);
- GNOME_GtkHTML_Editor_Engine_dropUndo (p->eeditor_engine, &ev);
- CORBA_exception_free (&ev);
+ gtkhtml_editor_drop_undo (GTKHTML_EDITOR (composer));
}
@@ -6222,8 +5978,9 @@
GSList *p, *pnext;
for (p = all_composers; p != NULL; p = pnext) {
+ EMsgComposer *composer = p->data;
pnext = p->next;
- do_exit (E_MSG_COMPOSER (p->data));
+ gtk_action_activate (ACTION (CLOSE));
}
if (all_composers == NULL)
@@ -6232,6 +5989,40 @@
return FALSE;
}
+EMsgComposer *
+e_msg_composer_load_from_file (const gchar *filename)
+{
+ CamelStream *stream;
+ CamelMimeMessage *msg;
+ EMsgComposer *composer;
+
+ g_return_val_if_fail (filename != NULL, NULL);
+
+ stream = camel_stream_fs_new_with_name (filename, O_RDONLY, 0);
+ if (stream == NULL)
+ return NULL;
+
+ msg = camel_mime_message_new ();
+ camel_data_wrapper_construct_from_stream (
+ CAMEL_DATA_WRAPPER (msg), stream);
+ camel_object_unref (stream);
+
+ composer = e_msg_composer_new_with_message (msg);
+ if (composer != NULL) {
+ g_signal_connect (
+ G_OBJECT (composer), "send",
+ G_CALLBACK (em_utils_composer_send_cb), NULL);
+
+ g_signal_connect (
+ G_OBJECT (composer), "save-draft",
+ G_CALLBACK (em_utils_composer_save_draft_cb), NULL);
+
+ gtk_widget_show (GTK_WIDGET (composer));
+ }
+
+ return composer;
+}
+
void
e_msg_composer_check_autosave (GtkWindow *parent)
{
@@ -6291,6 +6082,7 @@
void
e_msg_composer_reply_indent (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
CORBA_Environment ev;
@@ -6313,12 +6105,13 @@
GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "italic-off", &ev);
CORBA_exception_free (&ev);
-
+#endif /* GTKHTML-EDITOR */
}
void
e_msg_composer_insert_paragraph_before (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
CORBA_Environment ev;
@@ -6352,6 +6145,7 @@
}
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
static void
@@ -6371,6 +6165,7 @@
void
e_msg_composer_insert_paragraph_after (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
CORBA_Environment ev;
@@ -6397,11 +6192,13 @@
}
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
void
e_msg_composer_delete (EMsgComposer *composer)
{
+#if 0 /* GTKHTML-EDITOR */
EMsgComposerPrivate *p = composer->priv;
CORBA_Environment ev;
@@ -6433,6 +6230,7 @@
}
}
CORBA_exception_free (&ev);
+#endif /* GTKHTML-EDITOR */
}
@@ -6508,12 +6306,12 @@
void
e_msg_composer_set_saved (EMsgComposer *composer)
{
- CORBA_Environment ev;
- EMsgComposerPrivate *p = composer->priv;
+ GtkhtmlEditor *editor;
- CORBA_exception_init (&ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "saved", &ev);
- CORBA_exception_free (&ev);
+ g_return_if_fail (E_IS_MSG_COMPOSER (composer));
+
+ editor = GTKHTML_EDITOR (composer);
+ gtkhtml_editor_run_command (editor, "saved");
}
void
Modified: branches/mbarnes-composer/composer/e-msg-composer.h
==============================================================================
--- branches/mbarnes-composer/composer/e-msg-composer.h (original)
+++ branches/mbarnes-composer/composer/e-msg-composer.h Wed Feb 6 00:09:08 2008
@@ -24,12 +24,11 @@
#ifndef ___E_MSG_COMPOSER_H__
#define ___E_MSG_COMPOSER_H__
-#include <bonobo/bonobo-window.h>
-#include <bonobo/bonobo-ui-component.h>
#include <camel/camel-internet-address.h>
#include <camel/camel-mime-message.h>
#include <libedataserver/e-account.h>
#include <libebook/e-destination.h>
+#include <gtkhtml-editor.h>
#include "e-composer-header-table.h"
#include "Editor.h"
@@ -60,12 +59,12 @@
typedef struct _EMsgComposerPrivate EMsgComposerPrivate;
struct _EMsgComposer {
- BonoboWindow parent;
+ GtkhtmlEditor parent;
EMsgComposerPrivate *priv;
};
struct _EMsgComposerClass {
- BonoboWindowClass parent_class;
+ GtkhtmlEditorClass parent_class;
void (*send) (EMsgComposer *composer);
void (*save_draft) (EMsgComposer *composer,
Added: branches/mbarnes-composer/composer/evolution-composer.ui
==============================================================================
--- (empty file)
+++ branches/mbarnes-composer/composer/evolution-composer.ui Wed Feb 6 00:09:08 2008
@@ -0,0 +1,27 @@
+<ui>
+ <menubar name='main-menu'>
+ <placeholder name='pre-edit-menu'>
+ <menu action='file-menu'>
+ <menuitem action='send'/>
+ <separator/>
+ <menuitem action='save'/>
+ <menuitem action='save-as'/>
+ <menuitem action='save-draft'/>
+ <separator/>
+ <menuitem action='print-preview'/>
+ <menuitem action='print'/>
+ <separator/>
+ <menuitem action='close'/>
+ </menu>
+ </placeholder>
+ </menubar>
+ <toolbar name='main-toolbar'>
+ <placeholder name='pre-main-toolbar'>
+ <toolitem action='send'/>
+ <separator/>
+ <toolitem action='save-draft'/>
+ <toolitem action='attach'/>
+ <separator/>
+ </placeholder>
+ </toolbar>
+</ui>
Modified: branches/mbarnes-composer/configure.in
==============================================================================
--- branches/mbarnes-composer/configure.in (original)
+++ branches/mbarnes-composer/configure.in Wed Feb 6 00:09:08 2008
@@ -1537,7 +1537,7 @@
dnl --- evolution-mail flags
-EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE bonobo-activation-2.0 $mozilla_nss libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE)
+EVO_SET_COMPILE_FLAGS(EVOLUTION_MAIL, camel-provider-$EDS_PACKAGE libgnomeui-2.0 libbonoboui-2.0 libglade-2.0 gnome-vfs-module-2.0 libgtkhtml-$GTKHTML_PACKAGE gtkhtml-editor bonobo-activation-2.0 $mozilla_nss libebook-$EDS_PACKAGE libedataserverui-$EDS_PACKAGE)
AC_SUBST(EVOLUTION_MAIL_CFLAGS)
AC_SUBST(EVOLUTION_MAIL_LIBS)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]