1 /*
2  * Copyright (C) 2016 Red Hat, Inc. (www.redhat.com)
3  *
4  * This library is free software: you can redistribute it and/or modify it
5  * under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful, but
9  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
10  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
11  * for more details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this library. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #if !defined (__E_UTIL_H_INSIDE__) && !defined (LIBEUTIL_COMPILATION)
18 #error "Only <e-util/e-util.h> should be included directly."
19 #endif
20 
21 #ifndef E_CONTENT_EDITOR_H
22 #define E_CONTENT_EDITOR_H
23 
24 #include <glib-object.h>
25 #include <gtk/gtk.h>
26 
27 #include <camel/camel.h>
28 #include <libedataserver/libedataserver.h>
29 
30 #include <e-util/e-emoticon.h>
31 #include <e-util/e-spell-checker.h>
32 #include <e-util/e-util-enums.h>
33 
34 #define DEFAULT_CONTENT_EDITOR_NAME "WebKit"
35 
36 #define E_CONTENT_EDITOR_DIALOG_HRULE		"hrule"
37 #define E_CONTENT_EDITOR_DIALOG_IMAGE		"image"
38 #define E_CONTENT_EDITOR_DIALOG_LINK		"link"
39 #define E_CONTENT_EDITOR_DIALOG_PAGE		"page"
40 #define E_CONTENT_EDITOR_DIALOG_CELL		"cell"
41 #define E_CONTENT_EDITOR_DIALOG_TABLE		"table"
42 #define E_CONTENT_EDITOR_DIALOG_SPELLCHECK	"spellcheck"
43 #define E_CONTENT_EDITOR_DIALOG_FIND		"find"
44 #define E_CONTENT_EDITOR_DIALOG_REPLACE		"replace"
45 
46 G_BEGIN_DECLS
47 
48 struct _EHTMLEditor;
49 
50 #define E_TYPE_CONTENT_EDITOR e_content_editor_get_type ()
51 G_DECLARE_INTERFACE (EContentEditor, e_content_editor, E, CONTENT_EDITOR, GtkWidget)
52 
53 typedef GHashTable EContentEditorContentHash;
54 
55 typedef void (*EContentEditorInitializedCallback)	(EContentEditor *content_editor,
56 							 gpointer user_data);
57 
58 struct _EContentEditorInterface {
59 	GTypeInterface parent_interface;
60 
61 	void		(*initialize)			(EContentEditor *content_editor,
62 							 EContentEditorInitializedCallback callback,
63 							 gpointer user_data);
64 	void		(*setup_editor)			(EContentEditor *content_editor,
65 							 struct _EHTMLEditor *html_editor);
66 	void		(*update_styles)		(EContentEditor *editor);
67 	void		(*insert_content)		(EContentEditor *editor,
68 							 const gchar *content,
69 							 EContentEditorInsertContentFlags flags);
70 
71 	void		(*get_content)			(EContentEditor *editor,
72 							 guint32 flags, /* bit-or of EContentEditorGetContentFlags */
73 							 const gchar *inline_images_from_domain,
74 							 GCancellable *cancellable,
75 							 GAsyncReadyCallback callback,
76 							 gpointer user_data);
77 	EContentEditorContentHash *
78 			(*get_content_finish)		(EContentEditor *editor,
79 							 GAsyncResult *result,
80 							 GError **error);
81 
82 	void		(*insert_image)			(EContentEditor *editor,
83 							 const gchar *uri);
84 
85 	void		(*insert_emoticon)		(EContentEditor *editor,
86 							 EEmoticon *emoticon);
87 
88 	void		(*move_caret_on_coordinates)	(EContentEditor *editor,
89 							 gint x,
90 							 gint y,
91 							 gboolean cancel_if_not_collapsed);
92 
93 	void		(*cut)				(EContentEditor *editor);
94 
95 	void		(*copy)				(EContentEditor *editor);
96 
97 	void		(*paste)			(EContentEditor *editor);
98 
99 	void		(*paste_primary)		(EContentEditor *editor);
100 
101 	void		(*undo)				(EContentEditor *editor);
102 
103 	void		(*redo)				(EContentEditor *editor);
104 
105 	void		(*clear_undo_redo_history)	(EContentEditor *editor);
106 
107 	void		(*set_spell_checking_languages)	(EContentEditor *editor,
108 							 const gchar **languages);
109 
110 	gchar *		(*get_caret_word)		(EContentEditor *editor);
111 
112 	void		(*replace_caret_word)		(EContentEditor *editor,
113 							 const gchar *replacement);
114 
115 	void		(*select_all)			(EContentEditor *editor);
116 
117 	void		(*selection_indent)		(EContentEditor *editor);
118 
119 	void		(*selection_unindent)		(EContentEditor *editor);
120 
121 	void		(*selection_unlink)		(EContentEditor *editor);
122 
123 	void		(*find)				(EContentEditor *editor,
124 							 guint32 flags,
125 							 const gchar *text);
126 
127 	void		(*replace)			(EContentEditor *editor,
128 							 const gchar *replacement);
129 
130 	void		(*replace_all)			(EContentEditor *editor,
131 							 guint32 flags,
132 							 const gchar *find_text,
133 							 const gchar *replace_with);
134 
135 	void		(*selection_save)		(EContentEditor *editor);
136 
137 	void		(*selection_restore)		(EContentEditor *editor);
138 
139 	void		(*selection_wrap)		(EContentEditor *editor);
140 
141 	gchar *		(*get_current_signature_uid)	(EContentEditor *editor);
142 
143 	gboolean	(*is_ready)			(EContentEditor *editor);
144 
145 	gchar *		(*insert_signature)		(EContentEditor *editor,
146 							 const gchar *content,
147 							 gboolean is_html,
148 							 gboolean can_reposition_caret,
149 							 const gchar *signature_id,
150 							 gboolean *set_signature_from_message,
151 							 gboolean *check_if_signature_is_changed,
152 							 gboolean *ignore_next_signature_change);
153 
154 	void		(*delete_cell_contents)		(EContentEditor *editor);
155 
156 	void		(*delete_column)		(EContentEditor *editor);
157 
158 	void		(*delete_row)			(EContentEditor *editor);
159 
160 	void		(*delete_table)			(EContentEditor *editor);
161 
162 	void		(*insert_column_after)		(EContentEditor *editor);
163 
164 	void		(*insert_column_before)		(EContentEditor *editor);
165 
166 	void		(*insert_row_above)		(EContentEditor *editor);
167 
168 	void		(*insert_row_below)		(EContentEditor *editor);
169 
170 	void		(*on_dialog_open)		(EContentEditor *editor,
171 							 const gchar *name);
172 
173 	void		(*on_dialog_close)		(EContentEditor *editor,
174 							 const gchar *name);
175 
176 	void		(*h_rule_set_align)		(EContentEditor *editor,
177 							 const gchar *value);
178 
179 	gchar *		(*h_rule_get_align)		(EContentEditor *editor);
180 
181 	void		(*h_rule_set_size)		(EContentEditor *editor,
182 							 gint value);
183 
184 	gint		(*h_rule_get_size)		(EContentEditor *editor);
185 
186 	void		(*h_rule_set_width)		(EContentEditor *editor,
187 							 gint value,
188 							 EContentEditorUnit unit);
189 
190 	gint		(*h_rule_get_width)		(EContentEditor *editor,
191 							 EContentEditorUnit *unit);
192 
193 	void		(*h_rule_set_no_shade)		(EContentEditor *editor,
194 							 gboolean value);
195 
196 	gboolean	(*h_rule_get_no_shade)		(EContentEditor *editor);
197 
198 	void		(*image_set_src)		(EContentEditor *editor,
199 							 const gchar *value);
200 
201 	gchar *		(*image_get_src)		(EContentEditor *editor);
202 
203 	void		(*image_set_alt)		(EContentEditor *editor,
204 							 const gchar *value);
205 
206 	gchar *		(*image_get_alt)		(EContentEditor *editor);
207 
208 	gint32		(*image_get_natural_width)	(EContentEditor *editor);
209 
210 	gint32		(*image_get_width)		(EContentEditor *editor);
211 
212 	void		(*image_set_width)		(EContentEditor *editor,
213 							 gint value);
214 
215 	void		(*image_set_width_follow)	(EContentEditor *editor,
216 							 gboolean value);
217 
218 	gint32		(*image_get_natural_height)	(EContentEditor *editor);
219 
220 	gint32		(*image_get_height)		(EContentEditor *editor);
221 
222 	void		(*image_set_height)		(EContentEditor *editor,
223 							 gint value);
224 
225 	void		(*image_set_height_follow)	(EContentEditor *editor,
226 							 gboolean value);
227 
228 	void		(*image_set_url)		(EContentEditor *editor,
229 							 const gchar *value);
230 
231 	gchar *		(*image_get_url)		(EContentEditor *editor);
232 
233 	void		(*image_set_vspace)		(EContentEditor *editor,
234 							 gint value);
235 
236 	gint		(*image_get_vspace)		(EContentEditor *editor);
237 
238 	void		(*image_set_hspace)		(EContentEditor *editor,
239 							 gint value);
240 
241 	gint		(*image_get_hspace)		(EContentEditor *editor);
242 
243 	void		(*image_set_border)		(EContentEditor *editor,
244 							 gint border);
245 
246 	gint		(*image_get_border)		(EContentEditor *editor);
247 
248 	void		(*image_set_align)		(EContentEditor *editor,
249 							 const gchar *value);
250 
251 	gchar *		(*image_get_align)		(EContentEditor *editor);
252 
253 	void		(*link_get_properties)		(EContentEditor *editor,
254 							 gchar **href,
255 							 gchar **text);
256 
257 	void		(*link_set_properties)		(EContentEditor *editor,
258 							 const gchar *href,
259 							 const gchar *text);
260 
261 	void		(*page_set_text_color)		(EContentEditor *editor,
262 							 const GdkRGBA *value);
263 
264 	void 		(*page_get_text_color)		(EContentEditor *editor,
265 							 GdkRGBA *value);
266 
267 	void		(*page_set_background_color)	(EContentEditor *editor,
268 							 const GdkRGBA *value);
269 
270 	void		(*page_get_background_color)	(EContentEditor *editor,
271 							 GdkRGBA *value);
272 
273 	void		(*page_set_link_color)		(EContentEditor *editor,
274 							 const GdkRGBA *value);
275 
276 	void		(*page_get_link_color)		(EContentEditor *editor,
277 							 GdkRGBA *value);
278 
279 	void		(*page_set_visited_link_color)	(EContentEditor *editor,
280 							 const GdkRGBA *value);
281 
282 	void		(*page_get_visited_link_color)	(EContentEditor *editor,
283 							 GdkRGBA *value);
284 	void		(*page_set_font_name)		(EContentEditor *editor,
285 							 const gchar *value);
286 	const gchar *	(*page_get_font_name)		(EContentEditor *editor);
287 
288 	void		(*page_set_background_image_uri)
289 							(EContentEditor *editor,
290 							 const gchar *uri);
291 
292 	gchar *		(*page_get_background_image_uri)
293 							(EContentEditor *editor);
294 
295 	void		(*cell_set_v_align)		(EContentEditor *editor,
296 							 const gchar *value,
297 							 EContentEditorScope scope);
298 
299 	gchar *		(*cell_get_v_align)		(EContentEditor *editor);
300 
301 	void		(*cell_set_align)		(EContentEditor *editor,
302 							 const gchar *value,
303 							 EContentEditorScope scope);
304 
305 	gchar *		(*cell_get_align)		(EContentEditor *editor);
306 
307 	void		(*cell_set_wrap)		(EContentEditor *editor,
308 							 gboolean value,
309 							 EContentEditorScope scope);
310 
311 	gboolean	(*cell_get_wrap)		(EContentEditor *editor);
312 
313 	void		(*cell_set_header_style)	(EContentEditor *editor,
314 							 gboolean value,
315 							 EContentEditorScope scope);
316 
317 	gboolean	(*cell_is_header)		(EContentEditor *editor);
318 
319 	void		(*cell_set_width)		(EContentEditor *editor,
320 							 gint value,
321 							 EContentEditorUnit unit,
322 							 EContentEditorScope scope);
323 
324 	gint		(*cell_get_width)		(EContentEditor *editor,
325 							 EContentEditorUnit *unit);
326 
327 	void		(*cell_set_row_span)		(EContentEditor *editor,
328 							 gint value,
329 							 EContentEditorScope scope);
330 
331 	gint		(*cell_get_row_span)		(EContentEditor *editor);
332 
333 	void		(*cell_set_col_span)		(EContentEditor *editor,
334 							 gint value,
335 							 EContentEditorScope scope);
336 
337 	gint		(*cell_get_col_span)		(EContentEditor *editor);
338 
339 	gchar *		(*cell_get_background_image_uri)
340 							(EContentEditor *editor);
341 
342 	void		(*cell_set_background_image_uri)
343 							(EContentEditor *editor,
344 							 const gchar *uri);
345 
346 	void		(*cell_get_background_color)	(EContentEditor *editor,
347 							 GdkRGBA *value);
348 
349 	void		(*cell_set_background_color)	(EContentEditor *editor,
350 							 const GdkRGBA *value,
351 							 EContentEditorScope scope);
352 
353 	void		(*table_set_row_count)		(EContentEditor *editor,
354 							 guint value);
355 
356 	guint		(*table_get_row_count)		(EContentEditor *editor);
357 
358 	void		(*table_set_column_count)	(EContentEditor *editor,
359 							 guint value);
360 
361 	guint		(*table_get_column_count)	(EContentEditor *editor);
362 
363 	void		(*table_set_width)		(EContentEditor *editor,
364 							 gint value,
365 							 EContentEditorUnit unit);
366 
367 	guint		(*table_get_width)		(EContentEditor *editor,
368 							 EContentEditorUnit *unit);
369 
370 	void		(*table_set_align)		(EContentEditor *editor,
371 							 const gchar *value);
372 
373 	gchar *		(*table_get_align)		(EContentEditor *editor);
374 
375 	void		(*table_set_padding)		(EContentEditor *editor,
376 							 gint value);
377 
378 	gint		(*table_get_padding)		(EContentEditor *editor);
379 
380 	void		(*table_set_spacing)		(EContentEditor *editor,
381 							 gint value);
382 
383 	gint		(*table_get_spacing)		(EContentEditor *editor);
384 
385 	void		(*table_set_border)		(EContentEditor *editor,
386 							 gint value);
387 
388 	gint		(*table_get_border)		(EContentEditor *editor);
389 
390 	gchar *		(*table_get_background_image_uri)
391 							(EContentEditor *editor);
392 
393 	void		(*table_set_background_image_uri)
394 							(EContentEditor *editor,
395 							 const gchar *uri);
396 
397 	void		(*table_get_background_color)	(EContentEditor *editor,
398 							 GdkRGBA *value);
399 
400 	void		(*table_set_background_color)	(EContentEditor *editor,
401 							 const GdkRGBA *value);
402 
403 	gchar *		(*spell_check_next_word)	(EContentEditor *editor,
404 							 const gchar *word);
405 
406 	gchar *		(*spell_check_prev_word)	(EContentEditor *editor,
407 							 const gchar *word);
408 
409 	/* Signals */
410 	void		(*load_finished)		(EContentEditor *editor);
411 	gboolean	(*paste_clipboard)		(EContentEditor *editor);
412 	gboolean	(*paste_primary_clipboard)	(EContentEditor *editor);
413 	void		(*context_menu_requested)	(EContentEditor *editor,
414 							 EContentEditorNodeFlags flags,
415 							 const gchar *caret_word,
416 							 GdkEvent *event);
417 	void		(*find_done)			(EContentEditor *editor,
418 							 guint match_count);
419 	void		(*replace_all_done)		(EContentEditor *editor,
420 							 guint replaced_count);
421 	void		(*drop_handled)			(EContentEditor *editor);
422 	void		(*content_changed)		(EContentEditor *editor);
423 	CamelMimePart *	(*ref_mime_part)		(EContentEditor *editor,
424 							 const gchar *uri);
425 
426 	void		(*delete_h_rule)		(EContentEditor *editor);
427 	void		(*delete_image)			(EContentEditor *editor);
428 
429 	/* padding for future expansion */
430 	gpointer reserved[20];
431 };
432 
433 /* Properties */
434 
435 ESpellChecker *	e_content_editor_ref_spell_checker
436 						(EContentEditor *editor);
437 gboolean	e_content_editor_is_malfunction	(EContentEditor *editor);
438 gboolean	e_content_editor_can_cut	(EContentEditor *editor);
439 gboolean	e_content_editor_can_copy	(EContentEditor *editor);
440 gboolean	e_content_editor_can_paste	(EContentEditor *editor);
441 gboolean	e_content_editor_can_undo	(EContentEditor *editor);
442 gboolean	e_content_editor_can_redo	(EContentEditor *editor);
443 gint		e_content_editor_indent_level	(EContentEditor *editor);
444 gboolean	e_content_editor_get_spell_check_enabled
445 						(EContentEditor *editor);
446 void		e_content_editor_set_spell_check_enabled
447 						(EContentEditor *editor,
448 						 gboolean enable);
449 gboolean	e_content_editor_is_editable	(EContentEditor *editor);
450 void		e_content_editor_set_editable	(EContentEditor *editor,
451 						 gboolean editable);
452 gboolean	e_content_editor_get_changed	(EContentEditor *editor);
453 void		e_content_editor_set_changed	(EContentEditor *editor,
454 						 gboolean changed);
455 gboolean	e_content_editor_get_html_mode	(EContentEditor *editor);
456 void		e_content_editor_set_html_mode	(EContentEditor *editor,
457 						 gboolean html_mode);
458 void		e_content_editor_set_alignment	(EContentEditor *editor,
459 						 EContentEditorAlignment value);
460 EContentEditorAlignment
461 		e_content_editor_get_alignment	(EContentEditor *editor);
462 void		e_content_editor_set_background_color
463 						(EContentEditor *editor,
464 						 const GdkRGBA *value);
465 GdkRGBA *	e_content_editor_dup_background_color
466 						(EContentEditor *editor);
467 void		e_content_editor_set_font_color	(EContentEditor *editor,
468 						 const GdkRGBA *value);
469 GdkRGBA *	e_content_editor_dup_font_color	(EContentEditor *editor);
470 void		e_content_editor_set_font_name	(EContentEditor *editor,
471 						 const gchar *value);
472 gchar *		e_content_editor_dup_font_name	(EContentEditor *editor);
473 void		e_content_editor_set_font_size	(EContentEditor *editor,
474 						 gint value);
475 gint		e_content_editor_get_font_size	(EContentEditor *editor);
476 void		e_content_editor_set_block_format
477 						(EContentEditor *editor,
478 						 EContentEditorBlockFormat value);
479 EContentEditorBlockFormat
480 		e_content_editor_get_block_format
481 						(EContentEditor *editor);
482 void		e_content_editor_set_bold	(EContentEditor *editor,
483 						 gboolean bold);
484 gboolean	e_content_editor_is_bold	(EContentEditor *editor);
485 void		e_content_editor_set_italic	(EContentEditor *editor,
486 						 gboolean italic);
487 gboolean	e_content_editor_is_italic	(EContentEditor *editor);
488 void		e_content_editor_set_strikethrough
489 						(EContentEditor *editor,
490 						 gboolean strikethrough);
491 gboolean	e_content_editor_is_strikethrough
492 						(EContentEditor *editor);
493 void		e_content_editor_set_subscript	(EContentEditor *editor,
494 						 gboolean subscript);
495 gboolean	e_content_editor_is_subscript	(EContentEditor *editor);
496 void		e_content_editor_set_superscript
497 						(EContentEditor *editor,
498 						 gboolean superscript);
499 gboolean	e_content_editor_is_superscript
500 						(EContentEditor *editor);
501 void		e_content_editor_set_underline	(EContentEditor *editor,
502 						 gboolean underline);
503 gboolean	e_content_editor_is_underline	(EContentEditor *editor);
504 void		e_content_editor_set_start_bottom
505 						(EContentEditor *editor,
506 						 EThreeState value);
507 EThreeState	e_content_editor_get_start_bottom
508 						(EContentEditor *editor);
509 void		e_content_editor_set_top_signature
510 						(EContentEditor *editor,
511 						 EThreeState value);
512 EThreeState	e_content_editor_get_top_signature
513 						(EContentEditor *editor);
514 void		e_content_editor_set_visually_wrap_long_lines
515 						(EContentEditor *editor,
516 						 gboolean value);
517 gboolean	e_content_editor_get_visually_wrap_long_lines
518 						(EContentEditor *editor);
519 
520 /* Methods */
521 void		e_content_editor_initialize	(EContentEditor *content_editor,
522 						 EContentEditorInitializedCallback callback,
523 						 gpointer user_data);
524 void		e_content_editor_setup_editor	(EContentEditor *content_editor,
525 						 struct _EHTMLEditor *html_editor);
526 void		e_content_editor_update_styles	(EContentEditor *editor);
527 void		e_content_editor_insert_content	(EContentEditor *editor,
528 						 const gchar *content,
529 						 EContentEditorInsertContentFlags flags);
530 
531 void		e_content_editor_get_content	(EContentEditor *editor,
532 						 guint32 flags, /* bit-or of EContentEditorGetContentFlags */
533 						 const gchar *inline_images_from_domain,
534 						 GCancellable *cancellable,
535 						 GAsyncReadyCallback callback,
536 						 gpointer user_data);
537 EContentEditorContentHash *
538 		e_content_editor_get_content_finish
539 						(EContentEditor *editor,
540 						 GAsyncResult *result,
541 						 GError **error);
542 EContentEditorContentHash *
543 		e_content_editor_util_new_content_hash
544 						(void);
545 void		e_content_editor_util_free_content_hash
546 						(EContentEditorContentHash *content_hash);
547 void		e_content_editor_util_put_content_data
548 						(EContentEditorContentHash *content_hash,
549 						 EContentEditorGetContentFlags flag,
550 						 const gchar *data);
551 void		e_content_editor_util_take_content_data
552 						(EContentEditorContentHash *content_hash,
553 						 EContentEditorGetContentFlags flag,
554 						 gpointer data,
555 						 GDestroyNotify destroy_data);
556 void		e_content_editor_util_take_content_data_images
557 						(EContentEditorContentHash *content_hash,
558 						 GSList *image_parts); /* CamelMimePart * */
559 gpointer	e_content_editor_util_get_content_data
560 						(EContentEditorContentHash *content_hash,
561 						 EContentEditorGetContentFlags flag);
562 gpointer	e_content_editor_util_steal_content_data
563 						(EContentEditorContentHash *content_hash,
564 						 EContentEditorGetContentFlags flag,
565 						 GDestroyNotify *out_destroy_data);
566 CamelMimePart *	e_content_editor_util_create_data_mimepart
567 						(const gchar *uri,
568 						 const gchar *cid,
569 						 gboolean as_inline,
570 						 const gchar *prefer_filename,
571 						 const gchar *prefer_mime_type,
572 						 GCancellable *cancellable);
573 
574 void		e_content_editor_insert_image	(EContentEditor *editor,
575 						 const gchar *uri);
576 void		e_content_editor_insert_emoticon
577 						(EContentEditor *editor,
578 						 EEmoticon *emoticon);
579 
580 void		e_content_editor_move_caret_on_coordinates
581 						(EContentEditor *editor,
582 						 gint x,
583 						 gint y,
584 						 gboolean cancel_if_not_collapsed);
585 
586 void		e_content_editor_cut		(EContentEditor *editor);
587 
588 void		e_content_editor_copy		(EContentEditor *editor);
589 
590 void		e_content_editor_paste		(EContentEditor *editor);
591 
592 void		e_content_editor_paste_primary	(EContentEditor *editor);
593 
594 void		e_content_editor_undo		(EContentEditor *editor);
595 
596 void		e_content_editor_redo		(EContentEditor *editor);
597 
598 void		e_content_editor_clear_undo_redo_history
599 						(EContentEditor *editor);
600 
601 void		e_content_editor_set_spell_checking_languages
602 						(EContentEditor *editor,
603 						 const gchar **languages);
604 
605 void		e_content_editor_select_all	(EContentEditor *editor);
606 
607 gchar *		e_content_editor_get_caret_word	(EContentEditor *editor);
608 
609 void		e_content_editor_replace_caret_word
610 						(EContentEditor *editor,
611 						 const gchar *replacement);
612 
613 void		e_content_editor_selection_indent
614 						(EContentEditor *editor);
615 
616 void		e_content_editor_selection_unindent
617 						(EContentEditor *editor);
618 
619 void		e_content_editor_selection_unlink
620 						(EContentEditor *editor);
621 
622 void		e_content_editor_find		(EContentEditor *editor,
623 						 guint32 flags,
624 						 const gchar *text);
625 
626 void		e_content_editor_replace	(EContentEditor *editor,
627 						 const gchar *replacement);
628 
629 void		e_content_editor_replace_all	(EContentEditor *editor,
630 						 guint32 flags,
631 						 const gchar *find_text,
632 						 const gchar *replace_with);
633 
634 void		e_content_editor_selection_save	(EContentEditor *editor);
635 
636 void		e_content_editor_selection_restore
637 						(EContentEditor *editor);
638 
639 void		e_content_editor_selection_wrap	(EContentEditor *editor);
640 
641 gchar *		e_content_editor_get_current_signature_uid
642 						(EContentEditor *editor);
643 
644 gboolean	e_content_editor_is_ready	(EContentEditor *editor);
645 GError *	e_content_editor_dup_last_error	(EContentEditor *editor);
646 void		e_content_editor_take_last_error(EContentEditor *editor,
647 						 GError *error);
648 
649 gchar *		e_content_editor_insert_signature
650 						(EContentEditor *editor,
651 						 const gchar *content,
652 						 gboolean is_html,
653 						 gboolean can_reposition_caret,
654 						 const gchar *signature_id,
655 						 gboolean *set_signature_from_message,
656 						 gboolean *check_if_signature_is_changed,
657 						 gboolean *ignore_next_signature_change);
658 
659 void		e_content_editor_delete_cell_contents
660 						(EContentEditor *editor);
661 void
662 		e_content_editor_delete_column	(EContentEditor *editor);
663 
664 void		e_content_editor_delete_row	(EContentEditor *editor);
665 
666 void		e_content_editor_delete_table	(EContentEditor *editor);
667 
668 void		e_content_editor_insert_column_after
669 						(EContentEditor *editor);
670 
671 void		e_content_editor_insert_column_before
672 						(EContentEditor *editor);
673 
674 void		e_content_editor_insert_row_above
675 						(EContentEditor *editor);
676 
677 void		e_content_editor_insert_row_below
678 						(EContentEditor *editor);
679 
680 void		e_content_editor_on_dialog_open	(EContentEditor *editor,
681 						 const gchar *name);
682 void		e_content_editor_on_dialog_close(EContentEditor *editor,
683 						 const gchar *name);
684 
685 void		e_content_editor_h_rule_set_align
686 						(EContentEditor *editor,
687 						 const gchar *value);
688 
689 gchar *		e_content_editor_h_rule_get_align
690 						(EContentEditor *editor);
691 
692 void		e_content_editor_h_rule_set_size
693 						(EContentEditor *editor,
694 						 gint value);
695 
696 gint		e_content_editor_h_rule_get_size
697 						(EContentEditor *editor);
698 
699 void		e_content_editor_h_rule_set_width
700 						(EContentEditor *editor,
701 						 gint value,
702 						 EContentEditorUnit unit);
703 
704 gint		e_content_editor_h_rule_get_width
705 						(EContentEditor *editor,
706 						 EContentEditorUnit *unit);
707 
708 void		e_content_editor_h_rule_set_no_shade
709 						(EContentEditor *editor,
710 						 gboolean value);
711 
712 gboolean	e_content_editor_h_rule_get_no_shade
713 						(EContentEditor *editor);
714 
715 void		e_content_editor_image_set_src	(EContentEditor *editor,
716 						 const gchar *value);
717 
718 gchar *		e_content_editor_image_get_src	(EContentEditor *editor);
719 
720 void		e_content_editor_image_set_alt	(EContentEditor *editor,
721 						 const gchar *value);
722 
723 gchar *		e_content_editor_image_get_alt	(EContentEditor *editor);
724 
725 void		e_content_editor_image_set_url	(EContentEditor *editor,
726 						 const gchar *value);
727 
728 gchar *		e_content_editor_image_get_url	(EContentEditor *editor);
729 
730 void		e_content_editor_image_set_vspace
731 						(EContentEditor *editor,
732 						 gint value);
733 
734 gint		e_content_editor_image_get_vspace
735 						(EContentEditor *editor);
736 
737 void		e_content_editor_image_set_hspace
738 						(EContentEditor *editor,
739 						 gint value);
740 
741 gint		e_content_editor_image_get_hspace
742 						(EContentEditor *editor);
743 
744 void		e_content_editor_image_set_border
745 						(EContentEditor *editor,
746 						 gint value);
747 
748 gint		e_content_editor_image_get_border
749 						(EContentEditor *editor);
750 
751 void		e_content_editor_image_set_align
752 						(EContentEditor *editor,
753 						 const gchar *value);
754 
755 gchar *		e_content_editor_image_get_align
756 						(EContentEditor *editor);
757 
758 void		e_content_editor_image_set_width
759 						(EContentEditor *editor,
760 						 gint value);
761 
762 gint32		e_content_editor_image_get_width
763 						(EContentEditor *editor);
764 
765 gint32		e_content_editor_image_get_natural_width
766 						(EContentEditor *editor);
767 
768 void		e_content_editor_image_set_width_follow
769 						(EContentEditor *editor,
770 						 gboolean value);
771 void		e_content_editor_image_set_height
772 						(EContentEditor *editor,
773 						 gint value);
774 
775 gint32		e_content_editor_image_get_height
776 						(EContentEditor *editor);
777 
778 gint32		e_content_editor_image_get_natural_height
779 						(EContentEditor *editor);
780 
781 void		e_content_editor_image_set_height_follow
782 						(EContentEditor *editor,
783 						 gboolean value);
784 
785 void		e_content_editor_link_get_properties
786 						(EContentEditor *editor,
787 						 gchar **href,
788 						 gchar **text);
789 
790 void		e_content_editor_link_set_properties
791 						(EContentEditor *editor,
792 						 const gchar *href,
793 						 const gchar *text);
794 
795 void		e_content_editor_page_set_text_color
796 						(EContentEditor *editor,
797 						 const GdkRGBA *value);
798 
799 void		e_content_editor_page_get_text_color
800 						(EContentEditor *editor,
801 						 GdkRGBA *value);
802 
803 void		e_content_editor_page_set_background_color
804 						(EContentEditor *editor,
805 						 const GdkRGBA *value);
806 
807 void		e_content_editor_page_get_background_color
808 						(EContentEditor *editor,
809 						 GdkRGBA *value);
810 
811 void		e_content_editor_page_set_link_color
812 						(EContentEditor *editor,
813 						 const GdkRGBA *value);
814 
815 void		e_content_editor_page_get_link_color
816 						(EContentEditor *editor,
817 						 GdkRGBA *value);
818 
819 void		e_content_editor_page_set_visited_link_color
820 						(EContentEditor *editor,
821 						 const GdkRGBA *value);
822 
823 void		e_content_editor_page_get_visited_link_color
824 						(EContentEditor *editor,
825 						 GdkRGBA *value);
826 void		e_content_editor_page_set_font_name
827 						(EContentEditor *editor,
828 						 const gchar *value);
829 
830 const gchar *	e_content_editor_page_get_font_name
831 						(EContentEditor *editor);
832 
833 void		e_content_editor_page_set_background_image_uri
834 						(EContentEditor *editor,
835 						 const gchar *uri);
836 
837 gchar *		e_content_editor_page_get_background_image_uri
838 						(EContentEditor *editor);
839 
840 void		e_content_editor_cell_set_v_align
841 						(EContentEditor *editor,
842 						 const gchar *value,
843 						 EContentEditorScope scope);
844 
845 gchar *		e_content_editor_cell_get_v_align
846 						(EContentEditor *editor);
847 
848 void		e_content_editor_cell_set_align	(EContentEditor *editor,
849 						 const gchar *value,
850 						 EContentEditorScope scope);
851 
852 gchar *		e_content_editor_cell_get_align	(EContentEditor *editor);
853 
854 void		e_content_editor_cell_set_wrap	(EContentEditor *editor,
855 						 gboolean value,
856 						 EContentEditorScope scope);
857 
858 gboolean	e_content_editor_cell_get_wrap	(EContentEditor *editor);
859 
860 void		e_content_editor_cell_set_header_style
861 						(EContentEditor *editor,
862 						 gboolean value,
863 						 EContentEditorScope scope);
864 
865 gboolean	e_content_editor_cell_is_header	(EContentEditor *editor);
866 
867 void		e_content_editor_cell_set_width	(EContentEditor *editor,
868 						 gint value,
869 						 EContentEditorUnit unit,
870 						 EContentEditorScope scope);
871 
872 gint		e_content_editor_cell_get_width	(EContentEditor *editor,
873 						 EContentEditorUnit *unit);
874 
875 void		e_content_editor_cell_set_row_span
876 						(EContentEditor *editor,
877 						 gint value,
878 						 EContentEditorScope scope);
879 
880 gint		e_content_editor_cell_get_row_span
881 						(EContentEditor *editor);
882 
883 void		e_content_editor_cell_set_col_span
884 						(EContentEditor *editor,
885 						 gint value,
886 						 EContentEditorScope scope);
887 
888 gint		e_content_editor_cell_get_col_span
889 						(EContentEditor *editor);
890 
891 void		e_content_editor_cell_set_background_image_uri
892 						(EContentEditor *editor,
893 						 const gchar *uri);
894 
895 gchar *		e_content_editor_cell_get_background_image_uri
896 						(EContentEditor *editor);
897 
898 void		e_content_editor_cell_set_background_color
899 						(EContentEditor *editor,
900 						 const GdkRGBA *value,
901 						 EContentEditorScope scope);
902 
903 void		e_content_editor_cell_get_background_color
904 						(EContentEditor *editor,
905 						 GdkRGBA *value);
906 
907 void		e_content_editor_table_set_row_count
908 						(EContentEditor *editor,
909 						 guint value);
910 
911 guint		e_content_editor_table_get_row_count
912 						(EContentEditor *editor);
913 
914 void		e_content_editor_table_set_column_count
915 						(EContentEditor *editor,
916 						 guint value);
917 
918 guint		e_content_editor_table_get_column_count
919 						(EContentEditor *editor);
920 
921 void		e_content_editor_table_set_width
922 						(EContentEditor *editor,
923 						 gint value,
924 						 EContentEditorUnit unit);
925 
926 guint		e_content_editor_table_get_width
927 						(EContentEditor *editor,
928 						 EContentEditorUnit *unit);
929 
930 void		e_content_editor_table_set_align
931 						(EContentEditor *editor,
932 						 const gchar *value);
933 
934 gchar *		e_content_editor_table_get_align
935 						(EContentEditor *editor);
936 
937 void		e_content_editor_table_set_padding
938 						(EContentEditor *editor,
939 						 gint value);
940 
941 gint		e_content_editor_table_get_padding
942 						(EContentEditor *editor);
943 
944 void		e_content_editor_table_set_spacing
945 						(EContentEditor *editor,
946 						 gint value);
947 
948 gint		e_content_editor_table_get_spacing
949 						(EContentEditor *editor);
950 
951 void		e_content_editor_table_set_border
952 						(EContentEditor *editor,
953 						 gint value);
954 
955 gint		e_content_editor_table_get_border
956 						(EContentEditor *editor);
957 
958 gchar *		e_content_editor_table_get_background_image_uri
959 						(EContentEditor *editor);
960 
961 void		e_content_editor_table_set_background_image_uri
962 						(EContentEditor *editor,
963 						 const gchar *uri);
964 
965 void		e_content_editor_table_get_background_color
966 						(EContentEditor *editor,
967 						 GdkRGBA *value);
968 
969 void		e_content_editor_table_set_background_color
970 						(EContentEditor *editor,
971 						 const GdkRGBA *value);
972 
973 gchar *		e_content_editor_spell_check_next_word
974 						(EContentEditor *editor,
975 						 const gchar *word);
976 
977 gchar *		e_content_editor_spell_check_prev_word
978 						(EContentEditor *editor,
979 						 const gchar *word);
980 
981 void		e_content_editor_spell_check_replace_all
982 						(EContentEditor *editor,
983 						 const gchar *word,
984 						 const gchar *replacement);
985 void		e_content_editor_delete_h_rule	(EContentEditor *editor);
986 void		e_content_editor_delete_image	(EContentEditor *editor);
987 
988 /* Signal helpers */
989 
990 void		e_content_editor_emit_load_finished
991 						(EContentEditor *editor);
992 gboolean	e_content_editor_emit_paste_clipboard
993 						(EContentEditor *editor);
994 gboolean	e_content_editor_emit_paste_primary_clipboard
995 						(EContentEditor *editor);
996 void		e_content_editor_emit_context_menu_requested
997 						(EContentEditor *editor,
998 						 EContentEditorNodeFlags flags,
999 						 const gchar *caret_word,
1000 						 GdkEvent *event);
1001 void		e_content_editor_emit_find_done	(EContentEditor *editor,
1002 						 guint match_count);
1003 void		e_content_editor_emit_replace_all_done
1004 						(EContentEditor *editor,
1005 						 guint replaced_count);
1006 void		e_content_editor_emit_drop_handled
1007 						(EContentEditor *editor);
1008 void		e_content_editor_emit_content_changed
1009 						(EContentEditor *editor);
1010 CamelMimePart *	e_content_editor_emit_ref_mime_part
1011 						(EContentEditor *editor,
1012 						 const gchar *uri);
1013 
1014 G_END_DECLS
1015 
1016 #endif /* E_CONTENT_EDITOR_H */
1017