2007-04-24 [wwp] 2.9.1cvs19
[claws.git] / src / textview.h
index 9d10be52ed3ec90db36e9268e831cc2d9f7ef66c..e8ed572c85fb9ad2a8c0946ac782b7f8fd93fd33 100644 (file)
@@ -1,6 +1,6 @@
 /*
  * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client
- * Copyright (C) 1999-2003 Hiroyuki Yamamoto
+ * Copyright (C) 1999-2007 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
@@ -14,7 +14,7 @@
  *
  * 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 __TEXTVIEW_H__
 #include <gtk/gtktextiter.h>
 
 typedef struct _TextView       TextView;
-typedef struct _RemoteURI      RemoteURI;
+typedef struct _ClickableText  ClickableText;
+struct _ClickableText
+{
+       gchar *uri;
+
+       gchar *filename;
+
+       gpointer data;
+
+       guint start;
+       guint end;
+       
+       gboolean is_quote;
+       gint quote_level;
+       gboolean q_expanded;
+       gchar *fg_color;
+};
+
 
 #include "messageview.h"
 #include "procmime.h"
@@ -40,8 +57,12 @@ struct _TextView
        GtkWidget *scrolledwin;
        GtkWidget *text;
 
-       GtkWidget *popup_menu;
-       GtkItemFactory *popup_factory;
+       GtkWidget *link_popup_menu;
+       GtkItemFactory *link_popup_factory;
+       GtkWidget *mail_popup_menu;
+       GtkItemFactory *mail_popup_factory;
+       GtkWidget *file_popup_menu;
+       GtkItemFactory *file_popup_factory;
 
        gboolean default_text;
        gboolean is_in_signature;
@@ -54,13 +75,19 @@ struct _TextView
        MessageView *messageview;
        gint last_buttonpress;
 
-       RemoteURI *uri_hover;
+       ClickableText *uri_hover;
        GtkTextIter uri_hover_start_iter;
        GtkTextIter uri_hover_end_iter;
+       GtkWidget *image;
+       gboolean loading;
+       gboolean stop_loading;
+       gint prev_quote_level;
 };
 
-TextView *textview_create      (void);
-void textview_init             (TextView       *textview);
+TextView *textview_create              (void);
+void textview_init                     (TextView       *textview);
+void textview_reflect_prefs            (TextView       *textview);
+
 void textview_show_message     (TextView       *textview,
                                 MimeInfo       *mimeinfo,
                                 const gchar    *file);
@@ -85,13 +112,42 @@ void textview_scroll_one_line      (TextView       *textview,
 gboolean textview_scroll_page  (TextView       *textview,
                                 gboolean        up);
 
-void textview_update_message_colors    (void);
-
 gboolean textview_search_string                        (TextView       *textview,
                                                 const gchar    *str,
                                                 gboolean        case_sens);
 gboolean textview_search_string_backward       (TextView       *textview,
                                                 const gchar    *str,
                                                 gboolean        case_sens);
+void textview_cursor_wait(TextView *textview);
+void textview_cursor_normal(TextView *textview);
+void textview_show_icon(TextView *textview, const gchar *stock_id);
+void textview_get_selection_offsets    (TextView       *textview, 
+                                        gint           *sel_start, 
+                                        gint           *sel_end);
+gboolean textview_uri_security_check   (TextView       *textview, 
+                                        ClickableText  *uri);
+gchar *textview_get_visible_uri                (TextView       *textview, 
+                                        ClickableText  *uri);
+
+#define TEXTVIEW_INSERT(str) \
+       gtk_text_buffer_insert_with_tags_by_name \
+                               (buffer, &iter, str, -1,\
+                                "header", NULL)
+
+#define TEXTVIEW_INSERT_LINK(str, fname, udata) {                              \
+       ClickableText *uri;                                                     \
+       uri = g_new0(ClickableText, 1);                                 \
+       uri->uri = g_strdup("");                                        \
+       uri->start = gtk_text_iter_get_offset(&iter);                   \
+       gtk_text_buffer_insert_with_tags_by_name                        \
+                               (buffer, &iter, str, -1,                \
+                                "link", "header_title", "header",      \
+                                NULL);                                 \
+       uri->end = gtk_text_iter_get_offset(&iter);                     \
+       uri->filename = fname?g_strdup(fname):NULL;                     \
+       uri->data = udata;                                              \
+       textview->uri_list =                                            \
+               g_slist_prepend(textview->uri_list, uri);               \
+}
 
 #endif /* __TEXTVIEW_H__ */