#include "procmsg.h"
#include "menu.h"
#include "send.h"
+#include "imap.h"
#include "news.h"
#include "customheader.h"
#include "prefs_common.h"
static GList *compose_list = NULL;
-static void compose_set_undo (UndoMain *undostruct,
- gint undo_state,
- gint redo_state,
- GtkWidget *changewidget);
Compose *compose_generic_new (PrefsAccount *account,
const gchar *to,
FolderItem *item);
static void compose_set_ext_editor_sensitive (Compose *compose,
gboolean sensitive);
+static void compose_set_undo (UndoMain *undostruct,
+ gint undo_state,
+ gint redo_state,
+ GtkWidget *changewidget);
+
static gint calc_cursor_xpos (GtkSText *text,
gint extra,
gint char_width);
static void compose_destroy_cb (GtkWidget *widget,
Compose *compose);
-static void compose_undo_cb (Compose *compose);
-static void compose_redo_cb (Compose *compose);
+static void compose_undo_cb (Compose *compose);
+static void compose_redo_cb (Compose *compose);
static void compose_cut_cb (Compose *compose);
static void compose_copy_cb (Compose *compose);
static void compose_paste_cb (Compose *compose);
compose_entry_append(compose, mailto, COMPOSE_NEWSGROUPS);
}
}
+
+ /* Set save folder */
+ if(item && item->prefs && item->prefs->save_copy_to_folder) {
+ gchar *folderidentifier;
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), prefs_common.savemsg);
+ folderidentifier = folder_item_get_identifier(item);
+ gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ g_free(folderidentifier);
+ }
+
gtk_widget_grab_focus(compose->subject_entry);
if (prefs_common.auto_exteditor)
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED);
MSG_SET_PERM_FLAGS(msginfo->flags, MSG_REPLIED);
-
+ if (MSG_IS_IMAP(msginfo->flags))
+ imap_msg_set_perm_flags(msginfo, MSG_REPLIED);
CHANGE_FLAGS(msginfo);
compose = compose_create(account, COMPOSE_REPLY);
menu_set_toggle(ifactory, "/Message/Request Return Receipt", TRUE);
}
+ /* Set save folder */
+ if(msginfo->folder && msginfo->folder->prefs && msginfo->folder->prefs->save_copy_to_folder) {
+ gchar *folderidentifier;
+
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(compose->savemsg_checkbtn), TRUE);
+ folderidentifier = folder_item_get_identifier(msginfo->folder);
+ gtk_entry_set_text(GTK_ENTRY(compose->savemsg_entry), folderidentifier);
+ g_free(folderidentifier);
+ }
+
if (compose_parse_header(compose, msginfo) < 0) return;
compose_reply_set_entry(compose, msginfo, to_all, ignore_replyto,
followup_and_reply_to);
MSG_UNSET_PERM_FLAGS(msginfo->flags, MSG_REPLIED);
MSG_SET_PERM_FLAGS(msginfo->flags, MSG_FORWARDED);
+ if (MSG_IS_IMAP(msginfo->flags))
+ imap_msg_unset_perm_flags(msginfo, MSG_REPLIED);
CHANGE_FLAGS(msginfo);
compose = compose_create(account, COMPOSE_FORWARD);
if ((compose->account->protocol != A_NNTP) || followup_and_reply_to)
compose_entry_append(compose,
- ((compose->mailinglist && !ignore_replyto)
- ? compose->mailinglist
- : (compose->replyto && !ignore_replyto)
+ ((compose->replyto && !ignore_replyto)
? compose->replyto
+ : (compose->mailinglist && !ignore_replyto)
+ ? compose->mailinglist
: msginfo->from ? msginfo->from : ""),
COMPOSE_TO);
if (compose->account->protocol == A_NNTP) {
for (; cur_pos < tlen; cur_pos++) {
/* mark position of new line - needed for quotation wrap */
- if (linewrap_quote && is_new_line) {
- qlen = gtkut_text_str_compare
- (text, cur_pos, tlen, qfmt);
+ if (is_new_line) {
+ if (linewrap_quote) {
+ qlen = gtkut_text_str_compare
+ (text, cur_pos, tlen, qfmt);
+ if (qlen)
+ i_len = get_indent_length
+ (text, cur_pos, tlen);
+ else
+ i_len = 0;
+ }
is_new_line = FALSE;
- if (qlen)
- i_len = get_indent_length(text, cur_pos, tlen);
- else
- i_len = 0;
p_pos = cur_pos;
#ifdef WRAP_DEBUG
printf("new line i_len=%d qlen=%d p_pos=", i_len, qlen);
savemsg_checkbtn = gtk_check_button_new_with_label(_("Save Message to "));
gtk_widget_show(savemsg_checkbtn);
gtk_table_attach(GTK_TABLE(table), savemsg_checkbtn, 0, 1, rowcount, rowcount + 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK, 0, 0);
- gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), prefs_common.savemsg);
+ if(folder_get_default_outbox()) {
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(savemsg_checkbtn), prefs_common.savemsg);
+ }
gtk_signal_connect(GTK_OBJECT(savemsg_checkbtn), "toggled",
GTK_SIGNAL_FUNC(compose_savemsg_checkbtn_cb), compose);
gtk_widget_show(savemsg_entry);
gtk_table_attach_defaults(GTK_TABLE(table), savemsg_entry, 1, 2, rowcount, rowcount + 1);
gtk_editable_set_editable(GTK_EDITABLE(savemsg_entry), prefs_common.savemsg);
- folderidentifier = folder_item_get_identifier(folder_get_default_outbox());
- gtk_entry_set_text(GTK_ENTRY(savemsg_entry), folderidentifier);
- g_free(folderidentifier);
+ if(folder_get_default_outbox()) {
+ folderidentifier = folder_item_get_identifier(folder_get_default_outbox());
+ gtk_entry_set_text(GTK_ENTRY(savemsg_entry), folderidentifier);
+ g_free(folderidentifier);
+ }
savemsg_select = gtk_button_new_with_label (_("Select ..."));
gtk_widget_show (savemsg_select);
break;
}
+ undostruct = undo_init(text);
+ undo_set_undo_change_funct(undostruct, &compose_set_undo, menubar);
+
gtk_widget_show(window);
address_completion_start(window);
compose->exteditor_tag = -1;
compose->bounce_filename = NULL;
+ compose->undostruct = undostruct;
compose_set_title(compose);
compose->gtkpspell = gtkpspell;
#endif
- undostruct = undo_init(text);
-
- compose->undostruct = undostruct;
- undo_set_undo_change_funct(undostruct, &compose_set_undo, GTK_WIDGET(compose->menubar));
-
#if 0 /* NEW COMPOSE GUI */
if (account->protocol != A_NNTP) {
menuitem = gtk_item_factory_get_item(ifactory, "/Message/To");
gtk_stext_freeze(GTK_STEXT(compose->text));
- if (tmpl->subject)
+ if (tmpl->subject && *tmpl->subject != '\0')
gtk_entry_set_text(GTK_ENTRY(compose->subject_entry),
tmpl->subject);
- if (tmpl->to)
+ if (tmpl->to && *tmpl->to != '\0')
compose_entry_append(compose, tmpl->to, COMPOSE_TO);
if (compose->replyinfo == NULL) {
gtk_widget_set_sensitive(compose->linewrap_btn, sensitive);
}
+/**
+ * undo_set_undo:
+ *
+ * Change the sensivity of the menuentries undo and redo
+ **/
+static void compose_set_undo(UndoMain *undostruct, gint undo_state,
+ gint redo_state, GtkWidget *changewidget)
+{
+ GtkItemFactory *ifactory;
+
+ g_return_if_fail(changewidget != NULL);
+
+ debug_print("Set_undo. UNDO:%i REDO:%i\n", undo_state, redo_state);
+
+ ifactory = gtk_item_factory_from_widget(changewidget);
+
+ switch (undo_state) {
+ case UNDO_STATE_TRUE:
+ if (!undostruct->undo_state) {
+ debug_print ("Set_undo - Testpoint\n");
+ undostruct->undo_state = TRUE;
+ menu_set_sensitive(ifactory, "/Edit/Undo", TRUE);
+ }
+ break;
+ case UNDO_STATE_FALSE:
+ if (undostruct->undo_state) {
+ undostruct->undo_state = FALSE;
+ menu_set_sensitive(ifactory, "/Edit/Undo", FALSE);
+ }
+ break;
+ case UNDO_STATE_UNCHANGED:
+ break;
+ case UNDO_STATE_REFRESH:
+ menu_set_sensitive(ifactory, "/Edit/Undo",
+ undostruct->undo_state);
+ break;
+ default:
+ g_warning("Undo state not recognized");
+ break;
+ }
+
+ switch (redo_state) {
+ case UNDO_STATE_TRUE:
+ if (!undostruct->redo_state) {
+ undostruct->redo_state = TRUE;
+ menu_set_sensitive(ifactory, "/Edit/Redo", TRUE);
+ }
+ break;
+ case UNDO_STATE_FALSE:
+ if (undostruct->redo_state) {
+ undostruct->redo_state = FALSE;
+ menu_set_sensitive(ifactory, "/Edit/Redo", FALSE);
+ }
+ break;
+ case UNDO_STATE_UNCHANGED:
+ break;
+ case UNDO_STATE_REFRESH:
+ menu_set_sensitive(ifactory, "/Edit/Redo",
+ undostruct->redo_state);
+ break;
+ default:
+ g_warning("Redo state not recognized");
+ break;
+ }
+}
+
static gint calc_cursor_xpos(GtkSText *text, gint extra, gint char_width)
{
gint cursor_pos;
compose_destroy(compose);
}
-static void compose_undo_cb(Compose *compose)
+static void compose_undo_cb(Compose *compose)
{
undo_undo(compose->undostruct);
}
-static void compose_redo_cb(Compose *compose)
+static void compose_redo_cb(Compose *compose)
{
undo_redo(compose->undostruct);
}
if (GTK_CHECK_MENU_ITEM(widget)->active) {
gtk_widget_ref(compose->edit_vbox);
- gtk_container_remove(GTK_CONTAINER(compose->vbox2),
- compose->edit_vbox);
+ gtkut_container_remove(GTK_CONTAINER(compose->vbox2),
+ compose->edit_vbox);
gtk_paned_add2(GTK_PANED(compose->paned), compose->edit_vbox);
gtk_box_pack_start(GTK_BOX(compose->vbox2), compose->paned,
TRUE, TRUE, 0);
gtk_widget_ref(compose->paned);
gtk_widget_ref(compose->edit_vbox);
- gtk_container_remove(GTK_CONTAINER(compose->vbox2),
- compose->paned);
- gtk_container_remove(GTK_CONTAINER(compose->paned),
- compose->edit_vbox);
+ gtkut_container_remove(GTK_CONTAINER(compose->vbox2),
+ compose->paned);
+ gtkut_container_remove(GTK_CONTAINER(compose->paned),
+ compose->edit_vbox);
gtk_box_pack_start(GTK_BOX(compose->vbox2),
compose->edit_vbox, TRUE, TRUE, 0);
headerentry);
}
}
-
-/**
- * undo_set_undo:
- *
- * Change the sensivity of the menuentries undo and redo
- **/
-static void compose_set_undo(UndoMain *undostruct, gint undo_state,
- gint redo_state, GtkWidget *changewidget)
-{
- GtkItemFactory *ifactory;
- debug_print ("Set_undo. UNDO:%i REDO:%i\n",
- undo_state,
- redo_state);
-
- g_return_if_fail (changewidget != NULL);
-
- ifactory = gtk_item_factory_from_widget(changewidget);
-
- /* Set undo */
- switch (undo_state) {
- case UNDO_STATE_TRUE:
- if (!undostruct->undo_state) {
- debug_print ("Set_undo - Testpoint\n");
- undostruct->undo_state = TRUE;
- menu_set_sensitive(ifactory, "/Edit/Undo", TRUE);
- }
- break;
- case UNDO_STATE_FALSE:
- if (undostruct->undo_state) {
- undostruct->undo_state = FALSE;
- menu_set_sensitive(ifactory, "/Edit/Undo", FALSE);
- }
- break;
- case UNDO_STATE_UNCHANGED:
- break;
- case UNDO_STATE_REFRESH:
- menu_set_sensitive(ifactory, "/Edit/Undo", undostruct->undo_state);
- break;
- default:
- g_warning ("Undo state not recognized");
- break;
- }
-
- /* Set redo*/
- switch (redo_state) {
- case UNDO_STATE_TRUE:
- if (!undostruct->redo_state) {
- undostruct->redo_state = TRUE;
- menu_set_sensitive(ifactory, "/Edit/Redo", TRUE);
- }
- break;
- case UNDO_STATE_FALSE:
- if (undostruct->redo_state) {
- undostruct->redo_state = FALSE;
- menu_set_sensitive(ifactory, "/Edit/Redo", FALSE);
- }
- break;
- case UNDO_STATE_UNCHANGED:
- break;
- case UNDO_STATE_REFRESH:
- menu_set_sensitive(ifactory, "/Edit/Redo", undostruct->redo_state);
- break;
- default:
- g_warning ("Redo state not recognized");
- break;
- }
-}