comparison gtk/gtkimhtml.h @ 14191:009db0b357b5

This is a hand-crafted commit to migrate across subversion revisions 16854:16861, due to some vagaries of the way the original renames were done. Witness that monotone can do in one revision what svn had to spread across several.
author Ethan Blanton <elb@pidgin.im>
date Sat, 16 Dec 2006 04:59:55 +0000
parents
children cf8d25072151
comparison
equal deleted inserted replaced
14190:366be2ce35a7 14191:009db0b357b5
1 /**
2 * @file gtkimhtml.h GTK+ IM/HTML rendering component
3 * @ingroup gtkui
4 *
5 * Gaim is the legal property of its developers, whose names are too numerous
6 * to list here. Please refer to the COPYRIGHT file distributed with this
7 * source distribution.
8 *
9 * This program is free software; you can redistribute it and/or modify
10 * under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22 */
23 #ifndef _GAIM_GTKIMHTML_H_
24 #define _GAIM_GTKIMHTML_H_
25
26 #include <gdk/gdk.h>
27 #include <gtk/gtktextview.h>
28 #include <gtk/gtktooltips.h>
29 #include <gtk/gtkimage.h>
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 /**************************************************************************
36 * @name Structures
37 **************************************************************************/
38 /*@{*/
39
40 #define GTK_TYPE_IMHTML (gtk_imhtml_get_type ())
41 #define GTK_IMHTML(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_IMHTML, GtkIMHtml))
42 #define GTK_IMHTML_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_IMHTML, GtkIMHtmlClass))
43 #define GTK_IS_IMHTML(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_IMHTML))
44 #define GTK_IS_IMHTML_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IMHTML))
45 #define GTK_IMHTML_SCALABLE(obj) ((GtkIMHtmlScalable *)obj)
46
47 typedef struct _GtkIMHtml GtkIMHtml;
48 typedef struct _GtkIMHtmlClass GtkIMHtmlClass;
49 typedef struct _GtkIMHtmlFontDetail GtkIMHtmlFontDetail; /* The five elements contained in a FONT tag */
50 typedef struct _GtkSmileyTree GtkSmileyTree;
51 typedef struct _GtkIMHtmlSmiley GtkIMHtmlSmiley;
52 typedef struct _GtkIMHtmlScalable GtkIMHtmlScalable;
53 typedef struct _GtkIMHtmlImage GtkIMHtmlImage;
54 typedef struct _GtkIMHtmlHr GtkIMHtmlHr;
55 typedef struct _GtkIMHtmlFuncs GtkIMHtmlFuncs;
56
57 typedef enum {
58 GTK_IMHTML_BOLD = 1 << 0,
59 GTK_IMHTML_ITALIC = 1 << 1,
60 GTK_IMHTML_UNDERLINE = 1 << 2,
61 GTK_IMHTML_GROW = 1 << 3,
62 GTK_IMHTML_SHRINK = 1 << 4,
63 GTK_IMHTML_FACE = 1 << 5,
64 GTK_IMHTML_FORECOLOR = 1 << 6,
65 GTK_IMHTML_BACKCOLOR = 1 << 7,
66 GTK_IMHTML_BACKGROUND = 1 << 8,
67 GTK_IMHTML_LINK = 1 << 9,
68 GTK_IMHTML_IMAGE = 1 << 10,
69 GTK_IMHTML_SMILEY = 1 << 11,
70 GTK_IMHTML_LINKDESC = 1 << 12,
71 GTK_IMHTML_STRIKE = 1 << 13,
72 GTK_IMHTML_ALL = -1
73 } GtkIMHtmlButtons;
74
75 typedef enum {
76 GTK_IMHTML_SMILEY_CUSTOM = 1 << 0
77 } GtkIMHtmlSmileyFlags;
78
79 struct _GtkIMHtml {
80 GtkTextView text_view;
81 GtkTextBuffer *text_buffer;
82 GdkCursor *hand_cursor;
83 GdkCursor *arrow_cursor;
84 GdkCursor *text_cursor;
85 GHashTable *smiley_data;
86 GtkSmileyTree *default_smilies;
87 char *protocol_name;
88 guint scroll_src;
89 GTimer *scroll_time;
90
91 gboolean show_comments;
92
93 GtkWidget *tip_window;
94 char *tip;
95 guint tip_timer;
96 GtkTextTag *prelit_tag;
97
98 GList *scalables;
99 GdkRectangle old_rect;
100
101 gchar *search_string;
102
103 gboolean editable;
104 GtkIMHtmlButtons format_functions;
105 gboolean wbfo; /* Whole buffer formatting only. */
106
107 gint insert_offset;
108
109 struct {
110 gboolean bold:1;
111 gboolean italic:1;
112 gboolean underline:1;
113 gboolean strike:1;
114 gchar *forecolor;
115 gchar *backcolor;
116 gchar *background;
117 gchar *fontface;
118 int fontsize;
119 GtkTextTag *link;
120 } edit;
121
122 char *clipboard_text_string;
123 char *clipboard_html_string;
124
125 GSList *im_images;
126 GtkIMHtmlFuncs *funcs;
127 };
128
129 struct _GtkIMHtmlClass {
130 GtkTextViewClass parent_class;
131
132 void (*url_clicked)(GtkIMHtml *, const gchar *);
133 void (*buttons_update)(GtkIMHtml *, GtkIMHtmlButtons);
134 void (*toggle_format)(GtkIMHtml *, GtkIMHtmlButtons);
135 void (*clear_format)(GtkIMHtml *);
136 void (*update_format)(GtkIMHtml *);
137 gboolean (*message_send)(GtkIMHtml *);
138 };
139
140 struct _GtkIMHtmlFontDetail {
141 gushort size;
142 gchar *face;
143 gchar *fore;
144 gchar *back;
145 gchar *bg;
146 gchar *sml;
147 gboolean underline;
148 };
149
150 struct _GtkSmileyTree {
151 GString *values;
152 GtkSmileyTree **children;
153 GtkIMHtmlSmiley *image;
154 };
155
156 struct _GtkIMHtmlSmiley {
157 gchar *smile;
158 gchar *file;
159 GdkPixbufAnimation *icon;
160 gboolean hidden;
161 GdkPixbufLoader *loader;
162 GSList *anchors;
163 GtkIMHtmlSmileyFlags flags;
164 GtkIMHtml *imhtml;
165 };
166
167 struct _GtkIMHtmlScalable {
168 void (*scale)(struct _GtkIMHtmlScalable *, int, int);
169 void (*add_to)(struct _GtkIMHtmlScalable *, GtkIMHtml *, GtkTextIter *);
170 void (*free)(struct _GtkIMHtmlScalable *);
171 };
172
173 struct _GtkIMHtmlImage {
174 GtkIMHtmlScalable scalable;
175 GtkImage *image;
176 GdkPixbuf *pixbuf;
177 GtkTextMark *mark;
178 gchar *filename;
179 int width;
180 int height;
181 int id;
182 GtkWidget *filesel;
183 };
184
185 struct _GtkIMHtmlHr {
186 GtkIMHtmlScalable scalable;
187 GtkWidget *sep;
188 };
189
190 typedef enum {
191 GTK_IMHTML_NO_COLOURS = 1 << 0,
192 GTK_IMHTML_NO_FONTS = 1 << 1,
193 GTK_IMHTML_NO_COMMENTS = 1 << 2, /* Remove */
194 GTK_IMHTML_NO_TITLE = 1 << 3,
195 GTK_IMHTML_NO_NEWLINE = 1 << 4,
196 GTK_IMHTML_NO_SIZES = 1 << 5,
197 GTK_IMHTML_NO_SCROLL = 1 << 6,
198 GTK_IMHTML_RETURN_LOG = 1 << 7,
199 GTK_IMHTML_USE_POINTSIZE = 1 << 8,
200 GTK_IMHTML_NO_FORMATTING = 1 << 9,
201 GTK_IMHTML_USE_SMOOTHSCROLLING = 1 << 10
202 } GtkIMHtmlOptions;
203
204 enum {
205 GTK_IMHTML_DRAG_URL = 0,
206 GTK_IMHTML_DRAG_HTML,
207 GTK_IMHTML_DRAG_UTF8_STRING,
208 GTK_IMHTML_DRAG_COMPOUND_TEXT,
209 GTK_IMHTML_DRAG_STRING,
210 GTK_IMHTML_DRAG_TEXT,
211 GTK_IMHTML_DRAG_NUM
212 };
213
214 #define GTK_IMHTML_DND_TARGETS \
215 { "text/uri-list", 0, GTK_IMHTML_DRAG_URL }, \
216 { "_NETSCAPE_URL", 0, GTK_IMHTML_DRAG_URL }, \
217 { "text/html", 0, GTK_IMHTML_DRAG_HTML }, \
218 { "x-url/ftp", 0, GTK_IMHTML_DRAG_URL }, \
219 { "x-url/http", 0, GTK_IMHTML_DRAG_URL }, \
220 { "UTF8_STRING", 0, GTK_IMHTML_DRAG_UTF8_STRING }, \
221 { "COMPOUND_TEXT", 0, GTK_IMHTML_DRAG_COMPOUND_TEXT }, \
222 { "STRING", 0, GTK_IMHTML_DRAG_STRING }, \
223 { "text/plain", 0, GTK_IMHTML_DRAG_TEXT }, \
224 { "TEXT", 0, GTK_IMHTML_DRAG_TEXT }
225
226 typedef gpointer (*GtkIMHtmlGetImageFunc) (int id);
227 typedef gpointer (*GtkIMHtmlGetImageDataFunc) (gpointer i);
228 typedef size_t (*GtkIMHtmlGetImageSizeFunc) (gpointer i);
229 typedef const char *(*GtkIMHtmlGetImageFilenameFunc)(gpointer i);
230 typedef void (*GtkIMHtmlImageRefFunc) (int id);
231 typedef void (*GtkIMHtmlImageUnrefFunc) (int id);
232
233 struct _GtkIMHtmlFuncs {
234 GtkIMHtmlGetImageFunc image_get;
235 GtkIMHtmlGetImageDataFunc image_get_data;
236 GtkIMHtmlGetImageSizeFunc image_get_size;
237 GtkIMHtmlGetImageFilenameFunc image_get_filename;
238 GtkIMHtmlImageRefFunc image_ref;
239 GtkIMHtmlImageUnrefFunc image_unref;
240 };
241
242 /*@}*/
243
244 /**************************************************************************
245 * @name GTK+ IM/HTML rendering component API
246 **************************************************************************/
247 /*@{*/
248
249 /**
250 * Returns the GType object for an IM/HTML widget.
251 *
252 * @return The GType for an IM/HTML widget.
253 */
254 GType gtk_imhtml_get_type(void);
255
256 /**
257 * Creates and returns a new GTK+ IM/HTML widget.
258 *
259 * @return The GTK+ IM/HTML widget created.
260 */
261 GtkWidget *gtk_imhtml_new(void *, void *);
262
263 /**
264 * Returns the smiley object associated with the text.
265 *
266 * @param imhtml The GTK+ IM/HTML.
267 * @param sml The name of the smiley category.
268 * @param text The text associated with the smiley.
269 */
270
271 GtkIMHtmlSmiley *gtk_imhtml_smiley_get(GtkIMHtml * imhtml,
272 const gchar * sml, const gchar * text);
273
274
275 /**
276 * Associates a smiley with a GTK+ IM/HTML.
277 *
278 * @param imhtml The GTK+ IM/HTML.
279 * @param sml The name of the smiley category.
280 * @param smiley The GtkIMSmiley to associate.
281 */
282 void gtk_imhtml_associate_smiley(GtkIMHtml *imhtml, const gchar *sml, GtkIMHtmlSmiley *smiley);
283
284 /**
285 * Removes all smileys associated with a GTK+ IM/HTML.
286 *
287 * @param imhtml The GTK+ IM/HTML.
288 */
289 void gtk_imhtml_remove_smileys(GtkIMHtml *imhtml);
290
291 /**
292 * Sets the function callbacks to use with a GTK+ IM/HTML instance.
293 *
294 * @param imhtml The GTK+ IM/HTML.
295 * @param f The GtkIMHTMLFuncs struct containing the functions to use.
296 */
297 void gtk_imhtml_set_funcs(GtkIMHtml *imhtml, GtkIMHtmlFuncs *f);
298
299 /**
300 * Enables or disables showing the contents of HTML comments in a GTK+ IM/HTML.
301 *
302 * @param imhtml The GTK+ IM/HTML.
303 * @param show @c TRUE if comments should be shown, or @c FALSE otherwise.
304 */
305 void gtk_imhtml_show_comments(GtkIMHtml *imhtml, gboolean show);
306
307 /**
308 * Gets the protocol name associated with this GTK+ IM/HTML.
309 *
310 * @param imhtml The GTK+ IM/HTML
311 */
312 const char *gtk_imhtml_get_protocol_name(GtkIMHtml *imhtml);
313
314 /**
315 * Associates a protocol name with a GTK+ IM/HTML.
316 *
317 * @param imhtml The GTK+ IM/HTML.
318 * @param protocol_name The protocol name to associate with the IM/HTML.
319 */
320 void gtk_imhtml_set_protocol_name(GtkIMHtml *imhtml, const gchar *protocol_name);
321
322 /**
323 * Appends HTML formatted text to a GTK+ IM/HTML.
324 *
325 * @param imhtml The GTK+ IM/HTML.
326 * @param text The formatted text to append.
327 * @param options A GtkIMHtmlOptions object indicating insert behavior.
328 */
329 #define gtk_imhtml_append_text(imhtml, text, options) \
330 gtk_imhtml_append_text_with_images(imhtml, text, options, NULL)
331
332 /**
333 * Appends HTML formatted text to a GTK+ IM/HTML.
334 *
335 * @param imhtml The GTK+ IM/HTML.
336 * @param text The formatted text to append.
337 * @param options A GtkIMHtmlOptions object indicating insert behavior.
338 * @param unused Use @c NULL value.
339 */
340 void gtk_imhtml_append_text_with_images(GtkIMHtml *imhtml,
341 const gchar *text,
342 GtkIMHtmlOptions options,
343 GSList *unused);
344
345 /**
346 * Inserts HTML formatted text to a GTK+ IM/HTML at a given iter.
347 *
348 * @param imhtml The GTK+ IM/HTML.
349 * @param text The formatted text to append.
350 * @param options A GtkIMHtmlOptions object indicating insert behavior.
351 * @param iter A GtkTextIter in the GTK+ IM/HTML at which to insert text.
352 */
353 void gtk_imhtml_insert_html_at_iter(GtkIMHtml *imhtml,
354 const gchar *text,
355 GtkIMHtmlOptions options,
356 GtkTextIter *iter);
357
358 /**
359 * Scrolls a GTK+ IM/HTML to the end of its contents.
360 *
361 * @param imhtml The GTK+ IM/HTML.
362 * @param smooth A boolean indicating if smooth scrolling should be used.
363 */
364 void gtk_imhtml_scroll_to_end(GtkIMHtml *imhtml, gboolean smooth);
365
366 /**
367 * Delete the contents of a GTK+ IM/HTML between start and end.
368 *
369 * @param imhtml The GTK+ IM/HTML.
370 * @param start a postition in the imhtml's buffer
371 * @param end another postition in the imhtml's buffer
372 */
373 void gtk_imhtml_delete(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end);
374
375 /**
376 * Purges the contents from a GTK+ IM/HTML and resets formatting.
377 *
378 * @param imhtml The GTK+ IM/HTML.
379 */
380 #define gtk_imhtml_clear(imhtml) \
381 gtk_imhtml_delete(imhtml, NULL, NULL)
382
383 /**
384 * Scrolls a GTK+ IM/HTML up by one page.
385 *
386 * @param imhtml The GTK+ IM/HTML.
387 */
388 void gtk_imhtml_page_up(GtkIMHtml *imhtml);
389
390 /**
391 * Scrolls a GTK+ IM/HTML down by one page.
392 *
393 * @param imhtml The GTK+ IM/HTML.
394 */
395 void gtk_imhtml_page_down(GtkIMHtml *imhtml);
396
397 /**
398 * Creates and returns an new GTK+ IM/HTML scalable object.
399 *
400 * @return A new IM/HTML Scalable object.
401 */
402 GtkIMHtmlScalable *gtk_imhtml_scalable_new(void);
403
404 /**
405 * Creates and returns an new GTK+ IM/HTML scalable object with an image.
406 *
407 * @param img A GdkPixbuf of the image to add.
408 * @param filename The filename to associate with the image.
409 * @param id The id to associate with the image.
410 *
411 * @return A new IM/HTML Scalable object with an image.
412 */
413 GtkIMHtmlScalable *gtk_imhtml_image_new(GdkPixbuf *img, const gchar *filename, int id);
414
415 /**
416 * Destroys and frees a GTK+ IM/HTML scalable image.
417 *
418 * @param scale The GTK+ IM/HTML scalable.
419 */
420 void gtk_imhtml_image_free(GtkIMHtmlScalable *scale);
421
422 /**
423 * Rescales a GTK+ IM/HTML scalable image to a given size.
424 *
425 * @param scale The GTK+ IM/HTML scalable.
426 * @param width The new width.
427 * @param height The new height.
428 */
429 void gtk_imhtml_image_scale(GtkIMHtmlScalable *scale, int width, int height);
430
431 /**
432 * Adds a GTK+ IM/HTML scalable image to a given GTK+ IM/HTML at a given iter.
433 *
434 * @param scale The GTK+ IM/HTML scalable.
435 * @param imhtml The GTK+ IM/HTML.
436 * @param iter The GtkTextIter at which to add the scalable.
437 */
438 void gtk_imhtml_image_add_to(GtkIMHtmlScalable *scale, GtkIMHtml *imhtml, GtkTextIter *iter);
439
440 /**
441 * Creates and returns an new GTK+ IM/HTML scalable with a horizontal rule.
442 *
443 * @return A new IM/HTML Scalable object with an image.
444 */
445 GtkIMHtmlScalable *gtk_imhtml_hr_new(void);
446
447 /**
448 * Destroys and frees a GTK+ IM/HTML scalable horizontal rule.
449 *
450 * @param scale The GTK+ IM/HTML scalable.
451 */
452 void gtk_imhtml_hr_free(GtkIMHtmlScalable *scale);
453
454 /**
455 * Rescales a GTK+ IM/HTML scalable horizontal rule to a given size.
456 *
457 * @param scale The GTK+ IM/HTML scalable.
458 * @param width The new width.
459 * @param height The new height.
460 */
461 void gtk_imhtml_hr_scale(GtkIMHtmlScalable *scale, int width, int height);
462
463 /**
464 * Adds a GTK+ IM/HTML scalable horizontal rule to a given GTK+ IM/HTML at
465 * a given iter.
466 *
467 * @param scale The GTK+ IM/HTML scalable.
468 * @param imhtml The GTK+ IM/HTML.
469 * @param iter The GtkTextIter at which to add the scalable.
470 */
471 void gtk_imhtml_hr_add_to(GtkIMHtmlScalable *scale, GtkIMHtml *imhtml, GtkTextIter *iter);
472
473 /**
474 * Finds and highlights a given string in a GTK+ IM/HTML.
475 *
476 * @param imhtml The GTK+ IM/HTML.
477 * @param text The string to search for.
478 *
479 * @return @c TRUE if a search was performed, or @c FALSE if not.
480 */
481 gboolean gtk_imhtml_search_find(GtkIMHtml *imhtml, const gchar *text);
482
483 /**
484 * Clears the highlighting from a prior search in a GTK+ IM/HTML.
485 *
486 * @param imhtml The GTK+ IM/HTML.
487 */
488 void gtk_imhtml_search_clear(GtkIMHtml *imhtml);
489
490 /**
491 * Enables or disables editing in a GTK+ IM/HTML.
492 *
493 * @param imhtml The GTK+ IM/HTML.
494 * @param editable @c TRUE to make the widget editable, or @c FALSE otherwise.
495 */
496 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable);
497
498 /**
499 * Enables or disables whole buffer formatting only (wbfo) in a GTK+ IM/HTML.
500 * In this mode formatting options to the buffer take effect for the entire
501 * buffer instead of specific text.
502 *
503 * @param imhtml The GTK+ IM/HTML.
504 * @param wbfo @c TRUE to enable the mode, or @c FALSE otherwise.
505 */
506 void gtk_imhtml_set_whole_buffer_formatting_only(GtkIMHtml *imhtml, gboolean wbfo);
507
508 /**
509 * Indicates which formatting functions to enable and disable in a GTK+ IM/HTML.
510 *
511 * @param imhtml The GTK+ IM/HTML.
512 * @param buttons A GtkIMHtmlButtons bitmask indicating which functions to use.
513 */
514 void gtk_imhtml_set_format_functions(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons);
515
516 /**
517 * Returns which formatting functions are enabled in a GTK+ IM/HTML.
518 *
519 * @param imhtml The GTK+ IM/HTML.
520 *
521 * @return A GtkIMHtmlButtons bitmask indicating which functions to are enabled.
522 */
523 GtkIMHtmlButtons gtk_imhtml_get_format_functions(GtkIMHtml *imhtml);
524
525 /**
526 * Sets each boolean to @c TRUE or @c FALSE to indicate if that formatting option
527 * is enabled at the current position in a GTK+ IM/HTML.
528 *
529 * @param imhtml The GTK+ IM/HTML.
530 * @param bold The boolean to set for bold or @c NULL.
531 * @param italic The boolean to set for italic or @c NULL.
532 * @param underline The boolean to set for underline or @c NULL.
533 */
534 void gtk_imhtml_get_current_format(GtkIMHtml *imhtml, gboolean *bold, gboolean *italic, gboolean *underline);
535
536 /**
537 * Returns a string containing the selected font face at the current position
538 * in a GTK+ IM/HTML.
539 *
540 * @param imhtml The GTK+ IM/HTML.
541 *
542 * @return A string containg the font face or @c NULL if none is set.
543 */
544 char *gtk_imhtml_get_current_fontface(GtkIMHtml *imhtml);
545
546 /**
547 * Returns a string containing the selected foreground color at the current
548 * position in a GTK+ IM/HTML.
549 *
550 * @param imhtml The GTK+ IM/HTML.
551 *
552 * @return A string containg the foreground color or @c NULL if none is set.
553 */
554 char *gtk_imhtml_get_current_forecolor(GtkIMHtml *imhtml);
555
556 /**
557 * Returns a string containing the selected font background color at the current
558 * position in a GTK+ IM/HTML.
559 *
560 * @param imhtml The GTK+ IM/HTML.
561 *
562 * @return A string containg the font background color or @c NULL if none is set.
563 */
564 char *gtk_imhtml_get_current_backcolor(GtkIMHtml *imhtml);
565
566 /**
567 * Returns a string containing the selected background color at the current
568 * position in a GTK+ IM/HTML.
569 *
570 * @param imhtml The GTK+ IM/HTML.
571 *
572 * @return A string containg the background color or @c NULL if none is set.
573 */
574 char *gtk_imhtml_get_current_background(GtkIMHtml *imhtml);
575
576 /**
577 * Returns a integer containing the selected HTML font size at the current
578 * position in a GTK+ IM/HTML.
579 *
580 * @param imhtml The GTK+ IM/HTML.
581 *
582 * @return The HTML font size.
583 */
584 gint gtk_imhtml_get_current_fontsize(GtkIMHtml *imhtml);
585
586 /**
587 * Checks whether a GTK+ IM/HTML is marked as editable.
588 *
589 * @param imhtml The GTK+ IM/HTML.
590 *
591 * @return @c TRUE if the IM/HTML is editable, or @c FALSE otherwise.
592 */
593 gboolean gtk_imhtml_get_editable(GtkIMHtml *imhtml);
594
595 /**
596 * Clear all the formatting on a GTK+ IM/HTML.
597 *
598 * @param imhtml The GTK+ IM/HTML.
599 */
600 void gtk_imhtml_clear_formatting(GtkIMHtml *imhtml);
601
602 /**
603 * Toggles bold at the cursor location or selection in a GTK+ IM/HTML.
604 *
605 * @param imhtml The GTK+ IM/HTML.
606 */
607 void gtk_imhtml_toggle_bold(GtkIMHtml *imhtml);
608
609 /**
610 * Toggles italic at the cursor location or selection in a GTK+ IM/HTML.
611 *
612 * @param imhtml The GTK+ IM/HTML.
613 */
614 void gtk_imhtml_toggle_italic(GtkIMHtml *imhtml);
615
616 /**
617 * Toggles underline at the cursor location or selection in a GTK+ IM/HTML.
618 *
619 * @param imhtml The GTK+ IM/HTML.
620 */
621 void gtk_imhtml_toggle_underline(GtkIMHtml *imhtml);
622
623 /**
624 * Toggles strikethrough at the cursor location or selection in a GTK+ IM/HTML.
625 *
626 * @param imhtml The GTK+ IM/HTML.
627 */
628 void gtk_imhtml_toggle_strike(GtkIMHtml *imhtml);
629
630 /**
631 * Toggles a foreground color at the current location or selection in a GTK
632 * IM/HTML.
633 *
634 * @param imhtml The GTK+ IM/HTML.
635 * @param color The HTML-style color, or @c NULL or "" to clear the color.
636 *
637 * @return @c TRUE if a color was set, or @c FALSE if it was cleared.
638 */
639 gboolean gtk_imhtml_toggle_forecolor(GtkIMHtml *imhtml, const char *color);
640
641 /**
642 * Toggles a background color at the current location or selection in a GTK
643 * IM/HTML.
644 *
645 * @param imhtml The GTK+ IM/HTML.
646 * @param color The HTML-style color, or @c NULL or "" to clear the color.
647 *
648 * @return @c TRUE if a color was set, or @c FALSE if it was cleared.
649 */
650 gboolean gtk_imhtml_toggle_backcolor(GtkIMHtml *imhtml, const char *color);
651
652 /**
653 * Toggles a background color at the current location or selection in a GTK
654 * IM/HTML.
655 *
656 * @param imhtml The GTK+ IM/HTML.
657 * @param color The HTML-style color, or @c NULL or "" to clear the color.
658 *
659 * @return @c TRUE if a color was set, or @c FALSE if it was cleared.
660 */
661 gboolean gtk_imhtml_toggle_background(GtkIMHtml *imhtml, const char *color);
662
663 /**
664 * Toggles a font face at the current location or selection in a GTK+ IM/HTML.
665 *
666 * @param imhtml The GTK+ IM/HTML.
667 * @param face The font face name, or @c NULL or "" to clear the font.
668 *
669 * @return @c TRUE if a font name was set, or @c FALSE if it was cleared.
670 */
671 gboolean gtk_imhtml_toggle_fontface(GtkIMHtml *imhtml, const char *face);
672
673 /**
674 * Toggles a link tag with the given URL at the current location or selection
675 * in a GTK+ IM/HTML.
676 *
677 * @param imhtml The GTK+ IM/HTML.
678 * @param url The URL for the link or @c NULL to terminate the link.
679 */
680 void gtk_imhtml_toggle_link(GtkIMHtml *imhtml, const char *url);
681
682 /**
683 * Inserts a link to the given url at the given GtkTextMark in a GTK+ IM/HTML.
684 *
685 * @param imhtml The GTK+ IM/HTML.
686 * @param mark The GtkTextMark to insert the link at.
687 * @param url The URL for the link.
688 * @param text The string to use for the link description.
689 */
690 void gtk_imhtml_insert_link(GtkIMHtml *imhtml, GtkTextMark *mark, const char *url, const char *text);
691
692 /**
693 * Inserts a smiley at the current location or selection in a GTK+ IM/HTML.
694 *
695 * @param imhtml The GTK+ IM/HTML.
696 * @param sml The category of the smiley.
697 * @param smiley The text of the smiley to insert.
698 */
699 void gtk_imhtml_insert_smiley(GtkIMHtml *imhtml, const char *sml, char *smiley);
700 /**
701 * Inserts a smiley at the given iter in a GTK+ IM/HTML.
702 *
703 * @param imhtml The GTK+ IM/HTML.
704 * @param sml The category of the smiley.
705 * @param smiley The text of the smiley to insert.
706 * @param iter The GtkTextIter in the IM/HTML to insert the smiley at.
707 */
708 void gtk_imhtml_insert_smiley_at_iter(GtkIMHtml *imhtml, const char *sml, char *smiley, GtkTextIter *iter);
709
710 /**
711 * Inserts the IM/HTML scalable image with the given id at the given iter in a
712 * GTK+ IM/HTML.
713 *
714 * @param imhtml The GTK+ IM/HTML.
715 * @param id The id of the IM/HTML scalable.
716 * @param iter The GtkTextIter in the IM/HTML to insert the image at.
717 */
718 void gtk_imhtml_insert_image_at_iter(GtkIMHtml *imhtml, int id, GtkTextIter *iter);
719
720 /**
721 * Sets the font size at the current location or selection in a GTK+ IM/HTML.
722 *
723 * @param imhtml The GTK+ IM/HTML.
724 * @param size The HTML font size to use.
725 */
726 void gtk_imhtml_font_set_size(GtkIMHtml *imhtml, gint size);
727
728 /**
729 * Decreases the font size by 1 at the current location or selection in a GTK
730 * IM/HTML.
731 *
732 * @param imhtml The GTK+ IM/HTML.
733 */
734 void gtk_imhtml_font_shrink(GtkIMHtml *imhtml);
735
736 /**
737 * Increases the font size by 1 at the current location or selection in a GTK
738 * IM/HTML.
739 *
740 * @param imhtml The GTK+ IM/HTML.
741 */
742 void gtk_imhtml_font_grow(GtkIMHtml *imhtml);
743
744 /**
745 * Returns the HTML formatted contents between two iters in a GTK+ IM/HTML.
746 *
747 * @param imhtml The GTK+ IM/HTML.
748 * @param start The GtkTextIter indicating the start point in the IM/HTML.
749 * @param end The GtkTextIter indicating the end point in the IM/HTML.
750 *
751 * @return A string containing the HTML formatted text.
752 */
753 char *gtk_imhtml_get_markup_range(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end);
754
755 /**
756 * Returns the entire HTML formatted contents of a GTK+ IM/HTML.
757 *
758 * @param imhtml The GTK+ IM/HTML.
759 *
760 * @return A string containing the HTML formatted text.
761 */
762 char *gtk_imhtml_get_markup(GtkIMHtml *imhtml);
763
764 /**
765 * Returns a null terminated array of pointers to null terminated strings, each
766 * string for each line. g_strfreev() should be called to free it when done.
767 *
768 * @param imhtml The GTK+ IM/HTML.
769 *
770 * @return A null terminated array of null terminated HTML formatted strings.
771 */
772 char **gtk_imhtml_get_markup_lines(GtkIMHtml *imhtml);
773
774 /**
775 * Returns the entire unformatted (plain text) contents of a GTK+ IM/HTML
776 * between two iters in a GTK+ IM/HTML.
777 *
778 * @param imhtml The GTK+ IM/HTML.
779 * @param start The GtkTextIter indicating the start point in the IM/HTML.
780 * @param stop The GtkTextIter indicating the end point in the IM/HTML.
781 *
782 * @return A string containing the unformatted text.
783 */
784 char *gtk_imhtml_get_text(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *stop);
785
786 /*@}*/
787
788 #ifdef __cplusplus
789 }
790 #endif
791
792 #endif /* _GAIM_GTKIMHTML_H_ */