talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

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__ */