/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2006 Hiroyuki Yamamoto and the Sylpheed-Claws team
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef MIMEVIEW_H
#define MIMEVIEW_H
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+typedef struct _MimeView MimeView;
+typedef struct _MimeViewerFactory MimeViewerFactory;
+typedef struct _MimeViewer MimeViewer;
#include <glib.h>
#include <gdk/gdk.h>
#include <gtk/gtkwidget.h>
#include <gtk/gtkctree.h>
-
-typedef struct _MimeView MimeView;
-typedef struct _MimeViewerFactory MimeViewerFactory;
-typedef struct _MimeViewer MimeViewer;
+#include <gtk/gtktooltips.h>
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
#include "textview.h"
#include "messageview.h"
#include "procmime.h"
+#include "noticeview.h"
typedef enum
{
MIMEVIEW_TEXT,
- MIMEVIEW_VIEWER,
+ MIMEVIEW_VIEWER
} MimeViewType;
-struct _MimeView
+#ifdef USE_PTHREAD
+typedef struct _SigCheckData SigCheckData;
+struct _SigCheckData
{
- GtkWidget *notebook;
- GtkWidget *vbox;
+ pthread_t th;
+ MimeInfo *siginfo;
+ gboolean free_after_use;
+ gboolean destroy_mimeview;
+ gboolean timeout;
+};
+#endif
+struct _MimeView
+{
+ GtkWidget *hbox;
GtkWidget *paned;
GtkWidget *scrolledwin;
GtkWidget *ctree;
- GtkWidget *mime_vbox;
-
+ GtkWidget *mime_notebook;
+ GtkWidget *ctree_mainbox;
+ GtkWidget *icon_scroll;
+ GtkWidget *icon_vbox;
+ GtkWidget *icon_mainbox;
+ GtkWidget *mime_toggle;
+ GtkWidget *scrollbutton;
MimeViewType type;
GtkWidget *popupmenu;
gchar *file;
GSList *viewers;
+
+ GtkTargetList *target_list; /* DnD */
+
+ gint icon_count;
+ MainWindow *mainwin;
+ GtkTooltips *tooltips;
+ gint oldsize;
+
+ NoticeView *siginfoview;
+ MimeInfo *siginfo;
+#ifdef USE_PTHREAD
+ SigCheckData *check_data;
+#endif
+ MimeInfo *spec_part;
};
struct _MimeViewerFactory
{
+ /**
+ * Array of supported content types.
+ * Must be NULL terminated and lower case
+ */
gchar **content_types;
gint priority;
struct _MimeViewer
{
MimeViewerFactory *factory;
-
+
GtkWidget *(*get_widget) (MimeViewer *);
void (*show_mimepart) (MimeViewer *, const gchar *infile, MimeInfo *);
void (*clear_viewer) (MimeViewer *);
void (*destroy_viewer) (MimeViewer *);
+ gchar *(*get_selection) (MimeViewer *);
+ MimeView *mimeview;
};
-MimeView *mimeview_create (void);
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+
+MimeView *mimeview_create (MainWindow *mainwin);
void mimeview_init (MimeView *mimeview);
void mimeview_show_message (MimeView *mimeview,
MimeInfo *mimeinfo,
const gchar *file);
+gboolean mimeview_show_part (MimeView *mimeview,
+ MimeInfo *partinfo);
void mimeview_destroy (MimeView *mimeview);
+void mimeview_update (MimeView *mimeview);
+void mimeview_clear (MimeView *mimeview);
MimeInfo *mimeview_get_selected_part (MimeView *mimeview);
-#if USE_GPGME
-void mimeview_check_signature (MimeView *mimeview);
-#endif
+void mimeview_check_signature (MimeView *mimeview);
void mimeview_pass_key_press_event (MimeView *mimeview,
GdkEventKey *event);
void mimeview_register_viewer_factory (MimeViewerFactory *factory);
void mimeview_unregister_viewer_factory (MimeViewerFactory *factory);
+void mimeview_handle_cmd (MimeView *mimeview,
+ const gchar *cmd,
+ GdkEventButton *event,
+ gpointer data);
+void mimeview_select_mimepart_icon (MimeView *mimeview,
+ MimeInfo *partinfo);
+
#ifdef __cplusplus
}