msgview_list = g_list_append(msgview_list, msgview);
}
-MessageView *messageview_create_with_new_window(MainWindow *mainwin)
+static MessageView *messageview_create_with_new_window_visible(MainWindow *mainwin, gboolean show)
{
MessageView *msgview;
GtkWidget *window;
messageview_add_toolbar(msgview, window);
- gtk_widget_grab_focus(msgview->mimeview->textview->text);
- gtk_widget_show(window);
+ if (show) {
+ gtk_widget_grab_focus(msgview->mimeview->textview->text);
+ gtk_widget_show(window);
+ } else {
+ gtk_widget_realize(window);
+ }
msgview->new_window = TRUE;
msgview->window = window;
return msgview;
}
+MessageView *messageview_create_with_new_window(MainWindow *mainwin)
+{
+ return messageview_create_with_new_window_visible(mainwin, TRUE);
+}
void messageview_init(MessageView *messageview)
{
headerview_init(messageview->headerview);
/* send it */
path = folder_item_fetch_msg(queue, num);
- ok = procmsg_send_message_queue(path, &foo);
+ ok = procmsg_send_message_queue(path, &foo, queue, num);
g_free(path);
g_free(foo);
folder_item_remove_msg(queue, num);
gchar *subject = NULL;
g_return_val_if_fail(msginfo != NULL, -1);
+ if (messageview->mimeview->textview &&
+ messageview->mimeview->textview->loading) {
+ messageview->mimeview->textview->stop_loading = TRUE;
+ return 0;
+ }
if (messageview->toolbar)
toolbar_set_learn_button
(messageview->toolbar,
}
headerview_show(messageview->headerview, messageview->msginfo);
+ messageview_set_position(messageview, 0);
+
textview_set_all_headers(messageview->mimeview->textview,
messageview->all_headers);
g_free(subject);
}
- messageview_set_position(messageview, 0);
-
main_create_mailing_list_menu(messageview->mainwin, messageview->msginfo);
if (messageview->msginfo->extradata
}
if (messageview->updating) {
- debug_print("uh oh, better not touch that now\n");
+ debug_print("uh oh, better not touch that now (fetching)\n");
messageview->deferred_destroy = TRUE;
gtk_widget_hide(messageview->window);
return;
}
+
+ if (messageview->mimeview->textview
+ && messageview->mimeview->textview->loading) {
+ debug_print("uh oh, better not touch that now (loading text)\n");
+ messageview->deferred_destroy = TRUE;
+ messageview->mimeview->textview->stop_loading = TRUE;
+ gtk_widget_hide(messageview->window);
+ return;
+ }
headerview_destroy(messageview->headerview);
mimeview_destroy(messageview->mimeview);
union CompositeWin *cwin = &mainwin->win;
GtkWidget *vpaned = NULL;
GtkWidget *container = NULL;
- GtkItemFactory *ifactory = gtk_item_factory_from_widget(mainwin->menubar);
switch (mainwin->type) {
case SEPARATE_NONE:
case SEPARATE_BOTH:
return;
}
-
- if (vpaned->parent != NULL) {
- gtk_widget_ref(vpaned);
- gtkut_container_remove(GTK_CONTAINER(container), vpaned);
- gtk_widget_reparent(GTK_WIDGET_PTR(messageview), container);
- menu_set_sensitive(ifactory, "/View/Expand Summary View", FALSE);
- } else {
- gtk_widget_reparent(GTK_WIDGET_PTR(messageview), vpaned);
- gtk_container_add(GTK_CONTAINER(container), vpaned);
- gtk_widget_unref(vpaned);
- menu_set_sensitive(ifactory, "/View/Expand Summary View", TRUE);
- gtk_widget_grab_focus(GTK_WIDGET(mainwin->summaryview->ctree));
- }
}
static void return_receipt_show(NoticeView *noticeview, MsgInfo *msginfo)
{
+ gchar *addr = NULL;
+ gboolean from_me = FALSE;
if (msginfo->folder
&& (folder_has_parent_of_type(msginfo->folder, F_QUEUE)
|| folder_has_parent_of_type(msginfo->folder, F_DRAFT)))
return;
- noticeview_set_text(noticeview, _("This message asks for a return receipt."));
- noticeview_set_button_text(noticeview, _("Send receipt"));
- noticeview_set_button_press_callback(noticeview,
- G_CALLBACK(return_receipt_send_clicked),
- (gpointer) msginfo);
+ addr = g_strdup(msginfo->from);
+ if (addr) {
+ extract_address(addr);
+ if (account_find_from_address(addr)) {
+ from_me = TRUE;
+ }
+ g_free(addr);
+ }
+
+ if (from_me) {
+ noticeview_set_text(noticeview, _("You asked for a return receipt in this message."));
+ noticeview_set_button_text(noticeview, NULL);
+ noticeview_set_button_press_callback(noticeview, NULL, NULL);
+ } else {
+ noticeview_set_text(noticeview, _("This message asks for a return receipt."));
+ noticeview_set_button_text(noticeview, _("Send receipt"));
+ noticeview_set_button_press_callback(noticeview,
+ G_CALLBACK(return_receipt_send_clicked),
+ (gpointer) msginfo);
+ }
noticeview_show(noticeview);
}
messageview_save_as(messageview);
}
+#ifdef USE_GNOMEPRINT
+static void print_mimeview(MimeView *mimeview)
+{
+ if (!mimeview
+ || !mimeview->textview
+ || !mimeview->textview->text)
+ alertpanel_warning(_("Cannot print: the message doesn't "
+ "contain text."));
+ else {
+ gtk_widget_realize(mimeview->textview->text);
+ gedit_print(GTK_TEXT_VIEW(mimeview->textview->text));
+ }
+}
+
+void messageview_print(MsgInfo *msginfo, gboolean all_headers)
+{
+ PangoFontDescription *font_desc = NULL;
+ MessageView *tmpview = messageview_create_with_new_window_visible(
+ mainwindow_get_mainwindow(), FALSE);
+
+ if (prefs_common.use_different_print_font) {
+ font_desc = pango_font_description_from_string
+ (prefs_common.printfont);
+ } else {
+ font_desc = pango_font_description_from_string
+ (prefs_common.textfont);
+ }
+ if (font_desc) {
+ gtk_widget_modify_font(tmpview->mimeview->textview->text,
+ font_desc);
+ pango_font_description_free(font_desc);
+ }
+
+ tmpview->all_headers = all_headers;
+ if (msginfo && messageview_show(tmpview, msginfo,
+ tmpview->all_headers) >= 0) {
+ print_mimeview(tmpview->mimeview);
+ }
+ messageview_destroy(tmpview);
+}
+#endif
+
static void print_cb(gpointer data, guint action, GtkWidget *widget)
{
MessageView *messageview = (MessageView *)data;
procmsg_print_message(messageview->msginfo, cmdline);
g_free(cmdline);
#else
- if (!messageview->mimeview
- || !messageview->mimeview->textview
- || !messageview->mimeview->textview->text)
- alertpanel_warning(_("Cannot print: the message doesn't "
- "contain text."));
-
- gedit_print(
- GTK_TEXT_VIEW(messageview->mimeview
- ->textview->text));
+ messageview_print(messageview->msginfo, messageview->all_headers);
#endif
}
ifactory = gtk_item_factory_from_widget(messageview->menubar);
if (!ifactory) return;
if (messageview->mainwin->type == SEPARATE_MESSAGE) {
- menuitem = gtk_item_factory_get_widget(ifactory, "/View/Show all headers");
+ menuitem = gtk_item_factory_get_widget(ifactory, "/View/All headers");
gtk_check_menu_item_set_active
(GTK_CHECK_MENU_ITEM(menuitem),
messageview->mimeview->textview->show_all_headers);