evolution r35251 - in branches/mbarnes-composer: composer mail
- From: mbarnes svn gnome org
- To: svn-commits-list gnome org
- Subject: evolution r35251 - in branches/mbarnes-composer: composer mail
- Date: Wed, 26 Mar 2008 03:25:22 +0000 (GMT)
Author: mbarnes
Date: Wed Mar 26 03:25:21 2008
New Revision: 35251
URL: http://svn.gnome.org/viewvc/evolution?rev=35251&view=rev
Log:
First successfully sent message using the new HTML editor.
Fix some signature and header widget bugs.
Modified:
branches/mbarnes-composer/composer/e-composer-actions.c
branches/mbarnes-composer/composer/e-composer-autosave.c
branches/mbarnes-composer/composer/e-composer-autosave.h
branches/mbarnes-composer/composer/e-composer-header-table.c
branches/mbarnes-composer/composer/e-msg-composer.c
branches/mbarnes-composer/composer/e-msg-composer.h
branches/mbarnes-composer/composer/evolution-composer.ui
branches/mbarnes-composer/mail/em-composer-utils.c
Modified: branches/mbarnes-composer/composer/e-composer-actions.c
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-actions.c (original)
+++ branches/mbarnes-composer/composer/e-composer-actions.c Wed Mar 26 03:25:21 2008
@@ -84,7 +84,7 @@
gint response;
if (!e_msg_composer_is_dirty (composer) &&
- !e_msg_composer_is_autosaved (composer)) {
+ !e_composer_autosave_get_saved (composer)) {
gtk_widget_destroy (GTK_WIDGET (composer));
return;
@@ -457,7 +457,7 @@
NULL,
N_("Toggles whether the Subject field is displayed"),
G_CALLBACK (action_view_subject_cb),
- TRUE },
+ FALSE },
{ "view-to",
NULL,
Modified: branches/mbarnes-composer/composer/e-composer-autosave.c
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-autosave.c (original)
+++ branches/mbarnes-composer/composer/e-composer-autosave.c Wed Mar 26 03:25:21 2008
@@ -9,13 +9,14 @@
#include <camel/camel-stream-fs.h>
#define AUTOSAVE_SEED ".evolution-composer.autosave-XXXXXX"
-#define AUTOSAVE_INTERVAL 60000
+#define AUTOSAVE_INTERVAL 60000 /* 60 seconds */
typedef struct _AutosaveState AutosaveState;
struct _AutosaveState {
gchar *filename;
gboolean enabled;
+ gboolean saved;
gint fd;
};
@@ -296,7 +297,7 @@
/* Snapshot was successful; set various flags. */
e_msg_composer_set_saved (composer);
e_msg_composer_unset_changed (composer);
- e_msg_composer_set_autosaved (composer);
+ e_composer_autosave_set_saved (composer, TRUE);
camel_object_unref (message);
camel_object_unref (stream);
@@ -364,3 +365,30 @@
state->enabled = enabled;
}
+
+gboolean
+e_composer_autosave_get_saved (EMsgComposer *composer)
+{
+ AutosaveState *state;
+
+ g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), FALSE);
+
+ state = g_object_get_data (G_OBJECT (composer), "autosave");
+ g_return_val_if_fail (state != NULL, FALSE);
+
+ return state->saved;
+}
+
+void
+e_composer_autosave_set_saved (EMsgComposer *composer,
+ gboolean saved)
+{
+ AutosaveState *state;
+
+ g_return_if_fail (E_IS_MSG_COMPOSER (composer));
+
+ state = g_object_get_data (G_OBJECT (composer), "autosave");
+ g_return_if_fail (state != NULL);
+
+ state->saved = saved;
+}
Modified: branches/mbarnes-composer/composer/e-composer-autosave.h
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-autosave.h (original)
+++ branches/mbarnes-composer/composer/e-composer-autosave.h Wed Mar 26 03:25:21 2008
@@ -15,6 +15,9 @@
gboolean e_composer_autosave_get_enabled (EMsgComposer *composer);
void e_composer_autosave_set_enabled (EMsgComposer *composer,
gboolean enabled);
+gboolean e_composer_autosave_get_saved (EMsgComposer *composer);
+void e_composer_autosave_set_saved (EMsgComposer *composer,
+ gboolean saved);
G_END_DECLS
Modified: branches/mbarnes-composer/composer/e-composer-header-table.c
==============================================================================
--- branches/mbarnes-composer/composer/e-composer-header-table.c (original)
+++ branches/mbarnes-composer/composer/e-composer-header-table.c Wed Mar 26 03:25:21 2008
@@ -670,7 +670,6 @@
GTK_LABEL (widget), table->priv->signature_combo_box);
table->priv->signature_label = g_object_ref_sink (widget);
gtk_widget_show (widget);
-
}
GType
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 Mar 26 03:25:21 2008
@@ -2524,16 +2524,11 @@
editor_class->paste_clipboard = msg_composer_paste_clipboard;
editor_class->select_all = msg_composer_select_all;
- /* These callbacks are in the mail component. */
- class->send = em_utils_composer_send_cb;
- class->save_draft = em_utils_composer_save_draft_cb;
-
signals[SEND] = g_signal_new (
"send",
E_TYPE_MSG_COMPOSER,
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EMsgComposerClass, send),
- NULL, NULL,
+ 0, NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
@@ -2541,8 +2536,7 @@
"save-draft",
E_TYPE_MSG_COMPOSER,
G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (EMsgComposerClass, save_draft),
- NULL, NULL,
+ 0, NULL, NULL,
g_cclosure_marshal_VOID__BOOLEAN,
G_TYPE_NONE, 1,
G_TYPE_BOOLEAN);
@@ -2977,7 +2971,9 @@
const gchar *subject;
gint button;
- if (!e_msg_composer_is_dirty (composer) && !e_msg_composer_is_autosaved (composer)) {
+ if (!e_msg_composer_is_dirty (composer) &&
+ !e_composer_autosave_get_saved (composer)) {
+
gtk_widget_destroy (GTK_WIDGET (composer));
return;
}
@@ -3065,9 +3061,6 @@
g_signal_connect_swapped (
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);
account_changed_cb (composer);
@@ -3555,7 +3548,7 @@
editor = GTKHTML_EDITOR (composer);
table = e_msg_composer_get_header_table (composer);
- if (!gtkhtml_editor_search_by_data (editor, 1, "ClueFlow", "signature"))
+ if (!gtkhtml_editor_search_by_data (editor, 1, "ClueFlow", "signature", "1"))
return;
data = gtkhtml_editor_get_paragraph_data (editor, "signature_name");
@@ -3951,7 +3944,7 @@
/* XXX This should be elsewhere. */
e_msg_composer_unset_changed (composer);
- e_msg_composer_unset_autosaved (composer);
+ e_composer_autosave_set_saved (composer, FALSE);
}
static GList *
@@ -4600,79 +4593,64 @@
return msg;
}
-
-static void
-delete_old_signature (EMsgComposer *composer)
+/**
+ * e_msg_composer_show_sig:
+ * @composer: A message composer widget
+ *
+ * Set a signature
+ **/
+void
+e_msg_composer_show_sig_file (EMsgComposer *composer)
{
GtkhtmlEditor *editor;
+ GtkHTML *html;
+ gchar *html_text;
g_return_if_fail (E_IS_MSG_COMPOSER (composer));
editor = GTKHTML_EDITOR (composer);
+ html = gtkhtml_editor_get_html (editor);
+
+ if (composer->priv->redirect)
+ return;
+
+ composer->priv->in_signature_insert = TRUE;
+ gtkhtml_editor_freeze (editor);
+ gtkhtml_editor_run_command (editor, "cursor-position-save");
+ gtkhtml_editor_undo_begin (editor, "Set signature", "Reset signature");
+
+ /* Delete the old signature. */
gtkhtml_editor_run_command (editor, "block-selection");
gtkhtml_editor_run_command (editor, "cursor-bod");
-
- if (gtkhtml_editor_search_by_data (editor, 1, "ClueFlow", "signature")) {
+ if (gtkhtml_editor_search_by_data (editor, 1, "ClueFlow", "signature", "1")) {
gtkhtml_editor_run_command (editor, "select-paragraph");
gtkhtml_editor_run_command (editor, "delete");
gtkhtml_editor_set_paragraph_data (editor, "signature", "0");
gtkhtml_editor_run_command (editor, "delete-back");
}
-
gtkhtml_editor_run_command (editor, "unblock-selection");
-}
-
-/**
- * e_msg_composer_show_sig:
- * @composer: A message composer widget
- *
- * Set a signature
- **/
-void
-e_msg_composer_show_sig_file (EMsgComposer *composer)
-{
-#if 0 /* GTKHTML-EDITOR */
- CORBA_Environment ev;
- gchar *html;
- EMsgComposerPrivate *p = composer->priv;
- g_return_if_fail (E_IS_MSG_COMPOSER (composer));
- /* printf ("e_msg_composer_show_sig_file\n"); */
- /* printf ("set sig '%s' '%s'\n", sig_file, p->sig_file); */
- if (!p->redirect) {
- p->in_signature_insert = TRUE;
- CORBA_exception_init (&ev);
- GNOME_GtkHTML_Editor_Engine_freeze (p->eeditor_engine, &ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "cursor-position-save", &ev);
- GNOME_GtkHTML_Editor_Engine_undoBegin (p->eeditor_engine, "Set signature", "Reset signature", &ev);
-
- delete_old_signature (composer);
- html = get_signature_html (composer);
- if (html) {
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "insert-paragraph", &ev);
- if (!GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "cursor-backward", &ev))
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "insert-paragraph", &ev);
- else
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "cursor-forward", &ev);
- /* printf ("insert %s\n", html); */
- GNOME_GtkHTML_Editor_Engine_setParagraphData (p->eeditor_engine, "orig", "0", &ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "indent-zero", &ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "style-normal", &ev);
- GNOME_GtkHTML_Editor_Engine_insertHTML (p->eeditor_engine, html, &ev);
- g_free (html);
- }
-
- GNOME_GtkHTML_Editor_Engine_undoEnd (p->eeditor_engine, &ev);
- GNOME_GtkHTML_Editor_Engine_runCommand (p->eeditor_engine, "cursor-position-restore", &ev);
- GNOME_GtkHTML_Editor_Engine_thaw (p->eeditor_engine, &ev);
- CORBA_exception_free (&ev);
- p->in_signature_insert = FALSE;
+ html_text = get_signature_html (composer);
+ if (html_text) {
+ gtkhtml_editor_run_command (editor, "insert-paragraph");
+ if (!gtkhtml_editor_run_command (editor, "cursor-backward"))
+ gtkhtml_editor_run_command (editor, "insert-paragraph");
+ else
+ gtkhtml_editor_run_command (editor, "cursor-forward");
+ gtkhtml_editor_set_paragraph_data (editor, "orig", "0");
+ gtkhtml_editor_run_command (editor, "indent-zero");
+ gtkhtml_editor_run_command (editor, "style-normal");
+ gtkhtml_editor_insert_html (editor, html_text);
+ g_free (html_text);
}
- /* printf ("e_msg_composer_show_sig_file end\n"); */
-#endif /* GTKHTML-EDITOR */
-}
+ gtkhtml_editor_undo_end (editor);
+ gtkhtml_editor_run_command (editor, "cursor-position-restore");
+ gtkhtml_editor_thaw (editor);
+
+ composer->priv->in_signature_insert = FALSE;
+}
/**
* e_msg_composer_get_request_receipt
@@ -4880,43 +4858,27 @@
}
/**
- * e_msg_composer_set_autosaved:
- * @composer: An EMsgComposer object.
- *
- * Mark the composer as autosaved, so before the composer gets destroyed
- * the user will be prompted about unsaved changes.
- **/
-void
-e_msg_composer_set_autosaved (EMsgComposer *composer)
-{
- e_composer_autosave_set_saved (composer, TRUE);
-}
-
-
-/**
- * e_msg_composer_unset_autosaved:
- * @composer: An EMsgComposer object.
- *
- * Mark the composer as unautosaved, so no prompt about unsaved changes
- * will appear before destroying the composer.
- **/
-void
-e_msg_composer_unset_autosaved (EMsgComposer *composer)
-{
- e_composer_autosave_set_saved (composer, FALSE);
-}
-
-/**
* e_msg_composer_get_raw_message_text:
*
* Returns the text/plain of the message from composer
**/
-const gchar *
+GByteArray *
e_msg_composer_get_raw_message_text (EMsgComposer *composer)
{
+ GtkhtmlEditor *editor;
+ GByteArray *array;
+ gchar *text;
+ gsize length;
+
g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL);
- return gtkhtml_editor_get_text_plain (GTKHTML_EDITOR (composer), NULL);
+ array = g_byte_array_new ();
+ editor = GTKHTML_EDITOR (composer);
+ text = gtkhtml_editor_get_text_plain (editor, &length);
+ g_byte_array_append (array, (guint8 *) text, (guint) length);
+ g_free (text);
+
+ return array;
}
EAttachmentBar*
@@ -4927,12 +4889,6 @@
return (EAttachmentBar*) p->attachment_bar;
}
-gboolean
-e_msg_composer_is_autosaved (EMsgComposer *composer)
-{
- return e_composer_autosave_get_saved (composer);
-}
-
void
e_msg_composer_set_enable_autosave (EMsgComposer *composer, gboolean enabled)
{
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 Mar 26 03:25:21 2008
@@ -64,10 +64,6 @@
struct _EMsgComposerClass {
GtkhtmlEditorClass parent_class;
-
- void (*send) (EMsgComposer *composer);
- void (*save_draft) (EMsgComposer *composer,
- gboolean quit);
};
struct _EAttachmentBar;
@@ -138,9 +134,6 @@
void e_msg_composer_set_changed (EMsgComposer *composer);
void e_msg_composer_unset_changed (EMsgComposer *composer);
gboolean e_msg_composer_is_dirty (EMsgComposer *composer);
-void e_msg_composer_set_autosaved (EMsgComposer *composer);
-void e_msg_composer_unset_autosaved (EMsgComposer *composer);
-gboolean e_msg_composer_is_autosaved (EMsgComposer *composer);
void e_msg_composer_set_enable_autosave (EMsgComposer *composer,
gboolean enabled);
@@ -171,7 +164,7 @@
void e_msg_composer_set_saved (EMsgComposer *composer);
void e_msg_composer_set_send_options (EMsgComposer *composer,
gboolean send_enable);
-const gchar * e_msg_composer_get_raw_message_text (EMsgComposer *composer);
+GByteArray * e_msg_composer_get_raw_message_text (EMsgComposer *composer);
struct _EAttachmentBar* e_msg_composer_get_attachment_bar (EMsgComposer *composer);
Modified: branches/mbarnes-composer/composer/evolution-composer.ui
==============================================================================
--- branches/mbarnes-composer/composer/evolution-composer.ui (original)
+++ branches/mbarnes-composer/composer/evolution-composer.ui Wed Mar 26 03:25:21 2008
@@ -22,6 +22,7 @@
<menuitem action='view-reply-to'/>
<menuitem action='view-cc'/>
<menuitem action='view-bcc'/>
+ <menuitem action='view-subject'/>
</menu>
</placeholder>
<menu action='security-menu'>
Modified: branches/mbarnes-composer/mail/em-composer-utils.c
==============================================================================
--- branches/mbarnes-composer/mail/em-composer-utils.c (original)
+++ branches/mbarnes-composer/mail/em-composer-utils.c Wed Mar 26 03:25:21 2008
@@ -621,6 +621,9 @@
emcs->drafts_uid = g_strdup (drafts_uid);
}
+ g_signal_connect (composer, "send", G_CALLBACK (em_utils_composer_send_cb), emcs);
+ g_signal_connect (composer, "save-draft", G_CALLBACK (em_utils_composer_save_draft_cb), emcs);
+
g_object_weak_ref ((GObject *) composer, (GWeakNotify) composer_destroy_cb, emcs);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]