/*
* Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2011 Hiroyuki Yamamoto and the Claws Mail 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
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* GNU General Public License for more details.
*
* 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.
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
*/
#ifndef MIMEVIEW_H
#include <glib.h>
#include <gdk/gdk.h>
-#include <gtk/gtkwidget.h>
-#include <gtk/gtkctree.h>
-#include <gtk/gtktooltips.h>
+#include <gtk/gtk.h>
+#ifdef USE_PTHREAD
+#include <pthread.h>
+#endif
#include "textview.h"
#include "messageview.h"
typedef enum
{
MIMEVIEW_TEXT,
- MIMEVIEW_VIEWER,
+ MIMEVIEW_VIEWER
} MimeViewType;
+#ifdef USE_PTHREAD
+typedef struct _SigCheckData SigCheckData;
+struct _SigCheckData
+{
+ pthread_t th;
+ pthread_t cancel_th;
+ gboolean th_init;
+ gboolean cancel_th_init;
+
+ MimeInfo *siginfo;
+ gboolean free_after_use;
+ gboolean destroy_mimeview;
+ gboolean timeout;
+};
+#endif
+
struct _MimeView
{
GtkWidget *hbox;
GtkWidget *icon_vbox;
GtkWidget *icon_mainbox;
GtkWidget *mime_toggle;
-
+ GtkWidget *scrollbutton;
MimeViewType type;
+ gboolean ctree_mode;
GtkWidget *popupmenu;
- GtkItemFactory *popupfactory;
- GtkCTreeNode *opened;
+ GtkTreePath *opened;
TextView *textview;
MimeViewer *mimeviewer;
gint icon_count;
MainWindow *mainwin;
+#if !GTK_CHECK_VERSION(2,12,0)
GtkTooltips *tooltips;
+#endif
gint oldsize;
NoticeView *siginfoview;
MimeInfo *siginfo;
+ MimeInfo *spec_part;
+ GtkUIManager *ui_manager;
+ GtkActionGroup *action_group;
+#ifdef USE_PTHREAD
+ SigCheckData *check_data;
+#endif
};
struct _MimeViewerFactory
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 *);
+ gboolean (*scroll_page) (MimeViewer *, gboolean up);
+ void (*scroll_one_line) (MimeViewer *, gboolean up);
+ gboolean (*text_search) (MimeViewer *, gboolean backward,
+ const gchar *str,
+ gboolean case_sensitive);
+ void (*print) (MimeViewer *);
+ MimeView *mimeview;
};
#ifdef __cplusplus
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);
-void mimeview_check_signature (MimeView *mimeview);
-void mimeview_pass_key_press_event (MimeView *mimeview,
+gboolean 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);
+gboolean mimeview_scroll_page (MimeView *mimeview,
+ gboolean up);
+void mimeview_scroll_one_line (MimeView *mimeview,
+ gboolean up);
+gint mimeview_get_selected_part_num (MimeView *mimeview);
+void mimeview_select_part_num (MimeView *mimeview,
+ gint i);
+gboolean mimeview_has_viewer_for_content_type
+ (MimeView *mimeview,
+ const gchar *content_type);
+gboolean mimeview_tree_is_empty (MimeView *mimeview);
#ifdef __cplusplus
}