1 /* 2 * Claws Mail -- a GTK+ based, lightweight, and fast e-mail client 3 * Copyright (C) 1999-2016 Hiroyuki Yamamoto and the Claws Mail team 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 #ifndef __MESSAGEVIEW_H__ 20 #define __MESSAGEVIEW_H__ 21 22 #ifdef HAVE_CONFIG_H 23 #include "claws-features.h" 24 #endif 25 26 #include <glib.h> 27 #include <gtk/gtk.h> 28 29 #include "mainwindow.h" 30 #include "viewtypes.h" 31 #include "procmsg.h" 32 #include "procmime.h" 33 #include "toolbar.h" 34 35 #define MESSAGE_VIEW_SHOW_DONE_HOOKLIST "message_view_show_done_hooklist" 36 37 38 struct _MessageView 39 { 40 GtkWidget *vbox; 41 42 gboolean new_window; 43 GtkWidget *window; 44 45 /* Toolbar handlebox */ 46 GtkWidget *handlebox; 47 Toolbar *toolbar; 48 GtkWidget *menubar; 49 50 HeaderView *headerview; 51 MimeView *mimeview; 52 NoticeView *noticeview; 53 GtkWidget *statusbar; 54 gint statusbar_cid; 55 56 MainWindow *mainwin; 57 58 MsgInfo *msginfo; 59 60 gchar *forced_charset; 61 EncodingType forced_encoding; 62 63 gboolean visible; 64 65 /* this message was filtered by an action */ 66 gboolean filtered; 67 68 /* From messageview_show */ 69 gboolean all_headers; 70 71 gint msginfo_update_callback_id; 72 gboolean updating; 73 gboolean deferred_destroy; 74 75 gboolean show_full_text; 76 gboolean partial_display_shown; 77 gboolean update_needed; 78 GtkUIManager *ui_manager; 79 GList *trail; 80 gint trail_pos; 81 }; 82 83 struct _MimeInfoSearch 84 { 85 MimeInfo *parent; 86 MimeInfo *current; 87 MimeInfo *found; 88 }; 89 typedef struct _MimeInfoSearch MimeInfoSearch; 90 91 MessageView *messageview_create (MainWindow *mainwin); 92 MessageView *messageview_create_with_new_window (MainWindow *mainwin); 93 94 void messageview_init (MessageView *messageview); 95 gint messageview_show (MessageView *messageview, 96 MsgInfo *msginfo, 97 gboolean all_headers); 98 void messageview_clear (MessageView *messageview); 99 void messageview_destroy (MessageView *messageview); 100 101 TextView *messageview_get_current_textview (MessageView *messageview); 102 MimeInfo *messageview_get_selected_mime_part (MessageView *messageview); 103 104 void messageview_copy_clipboard (MessageView *messageview); 105 void messageview_select_all (MessageView *messageview); 106 void messageview_set_position (MessageView *messageview, 107 gint pos); 108 const GList *messageview_get_msgview_list (void); 109 void messageview_delete (MessageView *messageview); 110 gboolean messageview_search_string (MessageView *messageview, 111 const gchar *str, 112 gboolean case_sens); 113 gboolean messageview_search_string_backward (MessageView *messageview, 114 const gchar *str, 115 gboolean case_sens); 116 117 gboolean messageview_is_visible (MessageView *messageview); 118 119 void messageview_update_actions_menu (MessageView *msgview); 120 void messageview_reflect_prefs_pixmap_theme (void); 121 gchar *messageview_get_selection (MessageView *msgview); 122 123 void messageview_set_menu_sensitive (MessageView *msgview); 124 void messageview_learn (MessageView *msgview, 125 gboolean is_spam); 126 void messageview_print (MsgInfo *msginfo, 127 gboolean all_headers, 128 gint sel_start, 129 gint sel_end, 130 gint partnum); 131 void messageview_list_urls (MessageView *msgview); 132 void messageview_show_partial_display (MessageView *msgview, 133 MsgInfo *msginfo, 134 size_t length); 135 gboolean messageview_nav_has_prev(MessageView *messageview); 136 gboolean messageview_nav_has_next(MessageView *messageview); 137 MsgInfo *messageview_nav_get_prev(MessageView *messageview); 138 MsgInfo *messageview_nav_get_next(MessageView *messageview); 139 140 #endif /* __MESSAGEVIEW_H__ */ 141