+
+static void
+text_buffer_apply_tag (GtkTextBuffer *buffer, GtkTextTag *tag,
+ GtkTextIter *start, GtkTextIter *end,
+ gpointer userdata)
+{
+ ModestMsgEditWindow *window = MODEST_MSG_EDIT_WINDOW (userdata);
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (userdata);
+ gchar *tag_name;
+
+ if (tag == NULL+13) return;
+ g_object_get (G_OBJECT (tag), "name", &tag_name, NULL);
+ if ((tag_name != NULL) && (g_str_has_prefix (tag_name, "image-tag-replace-"))) {
+ replace_with_images (window, priv->images);
+ }
+}
+
+void
+modest_msg_edit_window_add_part (ModestMsgEditWindow *window,
+ TnyMimePart *part)
+{
+ ModestMsgEditWindowPrivate *priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ g_return_if_fail (TNY_IS_MIME_PART (part));
+ priv->attachments = g_list_prepend (priv->attachments, part);
+ g_object_ref (part);
+ modest_attachments_view_add_attachment (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), part);
+ gtk_widget_set_no_show_all (priv->attachments_caption, FALSE);
+ gtk_widget_show_all (priv->attachments_caption);
+ gtk_text_buffer_set_modified (priv->text_buffer, TRUE);
+}
+
+const gchar*
+modest_msg_edit_window_get_message_uid (ModestMsgEditWindow *window)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (window), NULL);
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
+
+ return priv->msg_uid;
+}
+
+GtkWidget *
+modest_msg_edit_window_get_child_widget (ModestMsgEditWindow *win,
+ ModestMsgEditWindowWidgetType widget_type)
+{
+ ModestMsgEditWindowPrivate *priv;
+
+ g_return_val_if_fail (MODEST_IS_MSG_EDIT_WINDOW (win), NULL);
+ priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (win);
+
+ switch (widget_type) {
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_BODY:
+ return priv->msg_body;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_TO:
+ return priv->to_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_CC:
+ return priv->cc_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_BCC:
+ return priv->bcc_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_SUBJECT:
+ return priv->subject_field;
+ break;
+ case MODEST_MSG_EDIT_WINDOW_WIDGET_TYPE_ATTACHMENTS:
+ return priv->attachments_view;
+ break;
+ default:
+ return NULL;
+ }
+}
+
+static void
+remove_tags (WPTextBuffer *buffer)
+{
+ GtkTextIter start, end;
+
+ gtk_text_buffer_get_start_iter (GTK_TEXT_BUFFER (buffer), &start);
+ gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (buffer), &end);
+
+ gtk_text_buffer_remove_all_tags (GTK_TEXT_BUFFER (buffer), &start, &end);
+}
+
+static void
+on_account_removed (TnyAccountStore *account_store,
+ TnyAccount *account,
+ gpointer user_data)
+{
+ /* Do nothing if it's a store account, because we use the
+ transport to send the messages */
+ if (tny_account_get_account_type(account) == TNY_ACCOUNT_TYPE_TRANSPORT) {
+ const gchar *parent_acc = NULL;
+ const gchar *our_acc = NULL;
+
+ our_acc = modest_window_get_active_account (MODEST_WINDOW (user_data));
+ parent_acc = modest_tny_account_get_parent_modest_account_name_for_server_account (account);
+ /* Close this window if I'm showing a message of the removed account */
+ if (strcmp (parent_acc, our_acc) == 0)
+ modest_ui_actions_on_close_window (NULL, MODEST_WINDOW (user_data));
+ }
+}