/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2002 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2003 Hiroyuki Yamamoto
*
* 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
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
-#ifndef __MIMEVIEW_H__
-#define __MIMEVIEW_H__
+#ifndef MIMEVIEW_H
+#define MIMEVIEW_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
#include <glib.h>
#include <gdk/gdk.h>
#include <gtk/gtkwidget.h>
#include <gtk/gtkctree.h>
+#include <gtk/gtktooltips.h>
-typedef struct _MimeView MimeView;
+typedef struct _MimeView MimeView;
+typedef struct _MimeViewerFactory MimeViewerFactory;
+typedef struct _MimeViewer MimeViewer;
#include "textview.h"
-#include "imageview.h"
#include "messageview.h"
#include "procmime.h"
typedef enum
{
MIMEVIEW_TEXT,
- MIMEVIEW_IMAGE
+ MIMEVIEW_VIEWER,
} MimeViewType;
struct _MimeView
{
+ GtkWidget *paned;
GtkWidget *notebook;
GtkWidget *vbox;
-
- 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;
MimeViewType type;
GtkCTreeNode *opened;
TextView *textview;
- ImageView *imageview;
+ MimeViewer *mimeviewer;
MessageView *messageview;
MimeInfo *mimeinfo;
gchar *file;
+
+ GSList *viewers;
+
+ GtkTargetList *target_list; /* DnD */
+
+ gint icon_count;
+ MainWindow *mainwin;
+ GtkTooltips *tooltips;
+ gint oldsize;
};
-MimeView *mimeview_create (void);
+struct _MimeViewerFactory
+{
+ /**
+ * Array of supported content types.
+ * Must be NULL terminated and lower case
+ */
+ gchar **content_types;
+ gint priority;
+
+ MimeViewer *(*create_viewer) (void);
+};
+
+struct _MimeViewer
+{
+ MimeViewerFactory *factory;
+
+ GtkWidget *(*get_widget) (MimeViewer *);
+ void (*show_mimepart) (MimeViewer *, const gchar *infile, MimeInfo *);
+ void (*clear_viewer) (MimeViewer *);
+ void (*destroy_viewer) (MimeViewer *);
+};
+
+MimeView *mimeview_create (MainWindow *mainwin);
void mimeview_init (MimeView *mimeview);
void mimeview_show_message (MimeView *mimeview,
MimeInfo *mimeinfo,
const gchar *file);
void mimeview_destroy (MimeView *mimeview);
+void mimeview_update (MimeView *mimeview);
+
+MimeInfo *mimeview_get_selected_part (MimeView *mimeview);
#if USE_GPGME
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);
+
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
#endif /* __MIMEVIEW_H__ */