aboutsummaryrefslogtreecommitdiffstats
path: root/e-util/e-web-view-gtkhtml.h
blob: ebe965c61b7de05d4f18469de48dfc190d980732 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
/*
 * e-web-view-gtkhtml.h
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2 of the License, or (at your option) version 3.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with the program; if not, see <http://www.gnu.org/licenses/>
 *
 */

/* This is intended to serve as a common base class for all HTML viewing
 * needs in Evolution.  Currently based on GtkHTML, the idea is to wrap
 * the GtkHTML API enough that we no longer have to make direct calls to
 * it.  This should help smooth the transition to WebKit/GTK+.
 *
 * This class handles basic tasks like mouse hovers over links, clicked
 * links, and servicing URI requests asynchronously via GIO. */

#if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION)
#error "Only <e-util/e-util.h> should be included directly."
#endif

#ifndef E_WEB_VIEW_GTKHTML_H
#define E_WEB_VIEW_GTKHTML_H

#include <gtkhtml/gtkhtml.h>

/* Standard GObject macros */
#define E_TYPE_WEB_VIEW_GTKHTML \
    (e_web_view_gtkhtml_get_type ())
#define E_WEB_VIEW_GTKHTML(obj) \
    (G_TYPE_CHECK_INSTANCE_CAST \
    ((obj), E_TYPE_WEB_VIEW_GTKHTML, EWebViewGtkHTML))
#define E_WEB_VIEW_GTKHTML_CLASS(cls) \
    (G_TYPE_CHECK_CLASS_CAST \
    ((cls), E_TYPE_WEB_VIEW_GTKHTML, EWebViewGtkHTMLClass))
#define E_IS_WEB_VIEW_GTKHTML(obj) \
    (G_TYPE_CHECK_INSTANCE_TYPE \
    ((obj), E_TYPE_WEB_VIEW_GTKHTML))
#define E_IS_WEB_VIEW_GTKHTML_CLASS(cls) \
    (G_TYPE_CHECK_CLASS_TYPE \
    ((cls), E_TYPE_WEB_VIEW_GTKHTML))
#define E_WEB_VIEW_GTKHTML_GET_CLASS(obj) \
    (G_TYPE_INSTANCE_GET_CLASS \
    ((obj), E_TYPE_WEB_VIEW_GTKHTML, EWebViewGtkHTMLClass))

G_BEGIN_DECLS

typedef struct _EWebViewGtkHTML EWebViewGtkHTML;
typedef struct _EWebViewGtkHTMLClass EWebViewGtkHTMLClass;
typedef struct _EWebViewGtkHTMLPrivate EWebViewGtkHTMLPrivate;

struct _EWebViewGtkHTML {
    GtkHTML parent;
    EWebViewGtkHTMLPrivate *priv;
};

struct _EWebViewGtkHTMLClass {
    GtkHTMLClass parent_class;

    /* Methods */
    gchar *     (*extract_uri)      (EWebViewGtkHTML *web_view,
                         GdkEventButton *event,
                         GtkHTML *frame);
    void        (*hovering_over_link)   (EWebViewGtkHTML *web_view,
                         const gchar *title,
                         const gchar *uri);
    void        (*link_clicked)     (EWebViewGtkHTML *web_view,
                         const gchar *uri);
    void        (*load_string)      (EWebViewGtkHTML *web_view,
                         const gchar *load_string);

    /* Signals */
    void        (*copy_clipboard)   (EWebViewGtkHTML *web_view);
    void        (*cut_clipboard)    (EWebViewGtkHTML *web_view);
    void        (*paste_clipboard)  (EWebViewGtkHTML *web_view);
    gboolean    (*popup_event)      (EWebViewGtkHTML *web_view,
                         GdkEventButton *event,
                         const gchar *uri);
    void        (*status_message)   (EWebViewGtkHTML *web_view,
                         const gchar *status_message);
    void        (*stop_loading)     (EWebViewGtkHTML *web_view);
    void        (*update_actions)   (EWebViewGtkHTML *web_view);
    gboolean    (*process_mailto)   (EWebViewGtkHTML *web_view,
                         const gchar *mailto_uri);
};

GType       e_web_view_gtkhtml_get_type     (void);
GtkWidget * e_web_view_gtkhtml_new          (void);
void        e_web_view_gtkhtml_clear        (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_load_string      (EWebViewGtkHTML *web_view,
                             const gchar *string);
gboolean    e_web_view_gtkhtml_get_animate      (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_animate      (EWebViewGtkHTML *web_view,
                             gboolean animate);
gboolean    e_web_view_gtkhtml_get_caret_mode   (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_caret_mode   (EWebViewGtkHTML *web_view,
                             gboolean caret_mode);
GtkTargetList * e_web_view_gtkhtml_get_copy_target_list (EWebViewGtkHTML *web_view);
gboolean    e_web_view_gtkhtml_get_disable_printing (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_disable_printing (EWebViewGtkHTML *web_view,
                             gboolean disable_printing);
gboolean    e_web_view_gtkhtml_get_disable_save_to_disk
                            (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_disable_save_to_disk
                            (EWebViewGtkHTML *web_view,
                             gboolean disable_save_to_disk);
gboolean    e_web_view_gtkhtml_get_editable     (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_editable     (EWebViewGtkHTML *web_view,
                             gboolean editable);
gboolean    e_web_view_gtkhtml_get_inline_spelling  (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_inline_spelling  (EWebViewGtkHTML *web_view,
                             gboolean inline_spelling);
gboolean    e_web_view_gtkhtml_get_magic_links  (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_magic_links  (EWebViewGtkHTML *web_view,
                             gboolean magic_links);
gboolean    e_web_view_gtkhtml_get_magic_smileys    (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_magic_smileys    (EWebViewGtkHTML *web_view,
                             gboolean magic_smileys);
const gchar *   e_web_view_gtkhtml_get_selected_uri (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_selected_uri (EWebViewGtkHTML *web_view,
                             const gchar *selected_uri);
GdkPixbufAnimation *
        e_web_view_gtkhtml_get_cursor_image (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_cursor_image (EWebViewGtkHTML *web_view,
                             GdkPixbufAnimation *animation);
GtkAction * e_web_view_gtkhtml_get_open_proxy   (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_open_proxy   (EWebViewGtkHTML *web_view,
                             GtkAction *open_proxy);
GtkTargetList * e_web_view_gtkhtml_get_paste_target_list
                            (EWebViewGtkHTML *web_view);
GtkAction * e_web_view_gtkhtml_get_print_proxy  (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_print_proxy  (EWebViewGtkHTML *web_view,
                             GtkAction *print_proxy);
GtkAction * e_web_view_gtkhtml_get_save_as_proxy    (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_set_save_as_proxy    (EWebViewGtkHTML *web_view,
                             GtkAction *save_as_proxy);
GtkAction * e_web_view_gtkhtml_get_action       (EWebViewGtkHTML *web_view,
                             const gchar *action_name);
GtkActionGroup *e_web_view_gtkhtml_get_action_group (EWebViewGtkHTML *web_view,
                             const gchar *group_name);
gchar *     e_web_view_gtkhtml_extract_uri      (EWebViewGtkHTML *web_view,
                             GdkEventButton *event,
                             GtkHTML *frame);
void        e_web_view_gtkhtml_copy_clipboard   (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_cut_clipboard    (EWebViewGtkHTML *web_view);
gboolean    e_web_view_gtkhtml_is_selection_active  (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_paste_clipboard  (EWebViewGtkHTML *web_view);
gboolean    e_web_view_gtkhtml_scroll_forward   (EWebViewGtkHTML *web_view);
gboolean    e_web_view_gtkhtml_scroll_backward  (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_select_all       (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_unselect_all     (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_zoom_100     (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_zoom_in      (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_zoom_out     (EWebViewGtkHTML *web_view);
GtkUIManager *  e_web_view_gtkhtml_get_ui_manager   (EWebViewGtkHTML *web_view);
GtkWidget * e_web_view_gtkhtml_get_popup_menu   (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_show_popup_menu  (EWebViewGtkHTML *web_view,
                             GdkEventButton *event,
                             GtkMenuPositionFunc func,
                             gpointer user_data);
void        e_web_view_gtkhtml_status_message   (EWebViewGtkHTML *web_view,
                            const gchar *status_message);
void        e_web_view_gtkhtml_stop_loading     (EWebViewGtkHTML *web_view);
void        e_web_view_gtkhtml_update_actions   (EWebViewGtkHTML *web_view);

G_END_DECLS

#endif /* E_WEB_VIEW_GTKHTML_H */