mimeview.h (4180B)
1 /* 2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client 3 * Copyright (C) 1999-2021 the Claws Mail team and Hiroyuki Yamamoto 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 20 #ifndef MIMEVIEW_H 21 #define MIMEVIEW_H 22 23 typedef struct _MimeViewerFactory MimeViewerFactory; 24 typedef struct _MimeViewer MimeViewer; 25 26 #include <glib.h> 27 #include <gdk/gdk.h> 28 #include <gtk/gtk.h> 29 30 #include "textview.h" 31 #include "messageview.h" 32 #include "procmime.h" 33 34 typedef enum 35 { 36 MIMEVIEW_TEXT, 37 MIMEVIEW_VIEWER 38 } MimeViewType; 39 40 struct _MimeView 41 { 42 GtkWidget *hbox; 43 GtkWidget *paned; 44 GtkWidget *scrolledwin; 45 GtkWidget *ctree; 46 GtkWidget *mime_notebook; 47 GtkWidget *ctree_mainbox; 48 GtkWidget *icon_scroll; 49 GtkWidget *icon_grid; 50 GtkWidget *icon_mainbox; 51 GtkWidget *mime_toggle; 52 GtkWidget *scrollbutton; 53 GtkWidget *arrow; 54 MimeViewType type; 55 gboolean ctree_mode; 56 57 GtkWidget *popupmenu; 58 59 GtkTreePath *opened; 60 61 TextView *textview; 62 MimeViewer *mimeviewer; 63 64 MessageView *messageview; 65 66 MimeInfo *mimeinfo; 67 68 gchar *file; 69 70 GSList *viewers; 71 72 GtkTargetList *target_list; /* DnD */ 73 74 gint icon_count; 75 MainWindow *mainwin; 76 77 MimeInfo *spec_part; 78 GtkUIManager *ui_manager; 79 GtkActionGroup *action_group; 80 }; 81 82 struct _MimeViewerFactory 83 { 84 /** 85 * Array of supported content types. 86 * Must be NULL terminated and lower case 87 */ 88 gchar **content_types; 89 gint priority; 90 91 MimeViewer *(*create_viewer) (void); 92 }; 93 94 struct _MimeViewer 95 { 96 MimeViewerFactory *factory; 97 98 GtkWidget *(*get_widget) (MimeViewer *); 99 void (*show_mimepart) (MimeViewer *, const gchar *infile, MimeInfo *); 100 void (*clear_viewer) (MimeViewer *); 101 void (*destroy_viewer) (MimeViewer *); 102 gchar *(*get_selection) (MimeViewer *); 103 gboolean (*text_search) (MimeViewer *, gboolean backward, 104 const gchar *str, 105 gboolean case_sensitive); 106 void (*print) (MimeViewer *); 107 MimeView *mimeview; 108 }; 109 110 #ifdef __cplusplus 111 extern "C" { 112 #endif /* __cplusplus */ 113 114 115 MimeView *mimeview_create (MainWindow *mainwin); 116 void mimeview_init (MimeView *mimeview); 117 void mimeview_show_message (MimeView *mimeview, 118 MimeInfo *mimeinfo, 119 const gchar *file); 120 gboolean mimeview_show_part (MimeView *mimeview, 121 MimeInfo *partinfo); 122 void mimeview_destroy (MimeView *mimeview); 123 void mimeview_update (MimeView *mimeview); 124 void mimeview_clear (MimeView *mimeview); 125 126 MimeInfo *mimeview_get_selected_part (MimeView *mimeview); 127 128 gboolean mimeview_pass_key_press_event (MimeView *mimeview, 129 GdkEventKey *event); 130 131 void mimeview_register_viewer_factory (MimeViewerFactory *factory); 132 void mimeview_unregister_viewer_factory (MimeViewerFactory *factory); 133 void mimeview_handle_cmd (MimeView *mimeview, 134 const gchar *cmd, 135 GdkEventButton *event, 136 gpointer data); 137 void mimeview_select_mimepart_icon (MimeView *mimeview, 138 MimeInfo *partinfo); 139 gint mimeview_get_selected_part_num (MimeView *mimeview); 140 void mimeview_select_part_num (MimeView *mimeview, 141 gint i); 142 gboolean mimeview_has_viewer_for_content_type 143 (MimeView *mimeview, 144 const gchar *content_type); 145 gboolean mimeview_tree_is_empty (MimeView *mimeview); 146 void mimeview_save_as (MimeView *mimeview); 147 void mimeview_display_as_text (MimeView *mimeview); 148 void mimeview_launch (MimeView *mimeview, 149 MimeInfo *partinfo); 150 void mimeview_open_with (MimeView *mimeview); 151 void mimeview_check_signature(MimeView *mimeview); 152 void mimeview_select_next_part(MimeView *mimeview); 153 void mimeview_select_prev_part(MimeView *mimeview); 154 155 156 #ifdef __cplusplus 157 } 158 #endif /* __cplusplus */ 159 160 #endif /* __MIMEVIEW_H__ */