2011-11-07 [pawel] 3.7.10cvs77
[claws.git] / src / textview.h
index 3ab32a78f4356f0ad88ad718773559531429cf38..4d3432d1a15aeefaf639b2220e811ba056e90de5 100644 (file)
@@ -1,10 +1,10 @@
 /*
  * 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,
@@ -13,8 +13,8 @@
  * 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 __TEXTVIEW_H__
 #endif
 
 #include <glib.h>
-#include <gtk/gtkwidget.h>
+#include <gtk/gtk.h>
 
 typedef struct _TextView       TextView;
+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"
@@ -38,8 +56,13 @@ struct _TextView
        GtkWidget *scrolledwin;
        GtkWidget *text;
 
-       GtkWidget *popup_menu;
-       GtkItemFactory *popup_factory;
+       GtkUIManager *ui_manager;
+       GtkActionGroup *link_action_group;
+       GtkWidget *link_popup_menu;
+       GtkActionGroup *mail_action_group;
+       GtkWidget *mail_popup_menu;
+       GtkActionGroup *file_action_group;
+       GtkWidget *file_popup_menu;
 
        gboolean default_text;
        gboolean is_in_signature;
@@ -51,15 +74,20 @@ struct _TextView
 
        MessageView *messageview;
        gint last_buttonpress;
-       gint show_url_msgid;
-       gint show_url_timeout_tag;
+
+       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);
-void textview_show_message     (TextView       *textview,
-                                MimeInfo       *mimeinfo,
-                                const gchar    *file);
+TextView *textview_create              (void);
+void textview_init                     (TextView       *textview);
+void textview_reflect_prefs            (TextView       *textview);
+
 void textview_show_part                (TextView       *textview,
                                 MimeInfo       *mimeinfo,
                                 FILE           *fp);
@@ -80,8 +108,8 @@ void textview_scroll_one_line        (TextView       *textview,
                                 gboolean        up);
 gboolean textview_scroll_page  (TextView       *textview,
                                 gboolean        up);
-
-void textview_update_message_colors    (void);
+void textview_scroll_max       (TextView       *textview,
+                                gboolean        up);
 
 gboolean textview_search_string                        (TextView       *textview,
                                                 const gchar    *str,
@@ -89,5 +117,41 @@ gboolean textview_search_string                     (TextView       *textview,
 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_BOLD(str) \
+       gtk_text_buffer_insert_with_tags_by_name \
+                               (buffer, &iter, str, -1,\
+                                "header", "header_title", 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__ */