Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

gtkimhtml.h

Go to the documentation of this file.
00001 
00024 #ifndef __GTK_IMHTML_H
00025 #define __GTK_IMHTML_H
00026 
00027 #include <gdk/gdk.h>
00028 #include <gtk/gtktextview.h>
00029 #include <gtk/gtktooltips.h>
00030 #include <gtk/gtkimage.h>
00031 
00032 #ifdef __cplusplus
00033 extern "C" {
00034 #endif
00035 
00036 #define GTK_TYPE_IMHTML            (gtk_imhtml_get_type ())
00037 #define GTK_IMHTML(obj)            (GTK_CHECK_CAST ((obj), GTK_TYPE_IMHTML, GtkIMHtml))
00038 #define GTK_IMHTML_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_IMHTML, GtkIMHtmlClass))
00039 #define GTK_IS_IMHTML(obj)         (GTK_CHECK_TYPE ((obj), GTK_TYPE_IMHTML))
00040 #define GTK_IS_IMHTML_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IMHTML))
00041 #define GTK_IMHTML_SCALABLE(obj)   ((GtkIMHtmlScalable *)obj)
00042 
00043 typedef struct _GtkIMHtml           GtkIMHtml;
00044 typedef struct _GtkIMHtmlClass      GtkIMHtmlClass;
00045 typedef struct _GtkIMHtmlFontDetail GtkIMHtmlFontDetail;    /* The five elements contained in a FONT tag */
00046 typedef struct _GtkSmileyTree       GtkSmileyTree;
00047 typedef struct _GtkIMHtmlSmiley     GtkIMHtmlSmiley;
00048 typedef struct _GtkIMHtmlScalable   GtkIMHtmlScalable;
00049 typedef struct _GtkIMHtmlImage      GtkIMHtmlImage;
00050 typedef struct _GtkIMHtmlHr         GtkIMHtmlHr;
00051 
00052 typedef enum {
00053     GTK_IMHTML_BOLD =      1 << 0,
00054     GTK_IMHTML_ITALIC =    1 << 1,
00055     GTK_IMHTML_UNDERLINE = 1 << 2,
00056     GTK_IMHTML_GROW =      1 << 3,
00057     GTK_IMHTML_SHRINK =    1 << 4,
00058     GTK_IMHTML_FACE =      1 << 5,
00059     GTK_IMHTML_FORECOLOR = 1 << 6,
00060     GTK_IMHTML_BACKCOLOR = 1 << 7,
00061     GTK_IMHTML_LINK =      1 << 8,
00062     GTK_IMHTML_IMAGE =     1 << 9,
00063     GTK_IMHTML_SMILEY =    1 << 10,
00064     GTK_IMHTML_ALL =      -1
00065 } GtkIMHtmlButtons;
00066 
00067 struct _GtkIMHtml {
00068     GtkTextView text_view;
00069     GtkTextBuffer *text_buffer;
00070     GtkTextMark *scrollpoint;
00071     GdkCursor *hand_cursor;
00072     GdkCursor *arrow_cursor;
00073     GdkCursor *text_cursor;
00074     GHashTable *smiley_data;
00075     GtkSmileyTree *default_smilies;
00076     char *protocol_name;
00077 
00078     gboolean show_smileys;
00079     gboolean show_comments;
00080 
00081     gboolean html_shortcuts;
00082     gboolean smiley_shortcuts;
00083 
00084     GtkWidget *tip_window;
00085     char *tip;
00086     guint tip_timer;
00087 
00088     GList *scalables;
00089     GdkRectangle old_rect;
00090 
00091     gchar *search_string;
00092 
00093     gboolean editable;
00094     GtkIMHtmlButtons format_functions;
00095     gboolean wbfo;  /* Whole buffer formatting only. */
00096 
00097     gint insert_offset;
00098 
00099     struct {
00100         gboolean bold:1;
00101         gboolean italic:1;
00102         gboolean underline:1;
00103         gchar *forecolor;
00104         gchar *backcolor;
00105         gchar *fontface;
00106         int fontsize;
00107         GtkTextTag *link;
00108     } edit;
00109 
00110     double zoom;
00111     int original_fsize;
00112 
00113     char *clipboard_text_string;
00114     char *clipboard_html_string;
00115 };
00116 
00117 struct _GtkIMHtmlClass {
00118     GtkTextViewClass parent_class;
00119 
00120     void (*url_clicked)(GtkIMHtml *, const gchar *);
00121     void (*buttons_update)(GtkIMHtml *, GtkIMHtmlButtons);
00122     void (*toggle_format)(GtkIMHtml *, GtkIMHtmlButtons);
00123     void (*clear_format)(GtkIMHtml *);
00124     void (*update_format)(GtkIMHtml *);
00125 };
00126 
00127 struct _GtkIMHtmlFontDetail {
00128     gushort size;
00129     gchar *face;
00130     gchar *fore;
00131     gchar *back;
00132     gchar *sml;
00133     gboolean underline;
00134 };
00135 
00136 struct _GtkSmileyTree {
00137     GString *values;
00138     GtkSmileyTree **children;
00139     GtkIMHtmlSmiley *image;
00140 };
00141 
00142 struct _GtkIMHtmlSmiley {
00143     gchar *smile;
00144     gchar *file;
00145     GdkPixbufAnimation *icon;
00146     gboolean hidden;
00147 };
00148 
00149 struct _GtkIMHtmlScalable {
00150     void (*scale)(struct _GtkIMHtmlScalable *, int, int);
00151     void (*add_to)(struct _GtkIMHtmlScalable *, GtkIMHtml *, GtkTextIter *);
00152     void (*free)(struct _GtkIMHtmlScalable *);
00153 };
00154 
00155 struct _GtkIMHtmlImage {
00156     GtkIMHtmlScalable scalable;
00157     GtkImage *image;
00158     GdkPixbuf *pixbuf;
00159     GtkTextMark *mark;
00160     gchar *filename;
00161     int width;
00162     int height;
00163 };
00164 
00165 struct _GtkIMHtmlHr {
00166     GtkIMHtmlScalable scalable;
00167     GtkWidget *sep;
00168 };
00169 
00170 typedef enum {
00171     GTK_IMHTML_NO_COLOURS    = 1 << 0,
00172     GTK_IMHTML_NO_FONTS      = 1 << 1,
00173     GTK_IMHTML_NO_COMMENTS   = 1 << 2, /* Remove */
00174     GTK_IMHTML_NO_TITLE      = 1 << 3,
00175     GTK_IMHTML_NO_NEWLINE    = 1 << 4,
00176     GTK_IMHTML_NO_SIZES      = 1 << 5,
00177     GTK_IMHTML_NO_SCROLL     = 1 << 6,
00178     GTK_IMHTML_RETURN_LOG    = 1 << 7,
00179     GTK_IMHTML_USE_POINTSIZE = 1 << 8
00180 } GtkIMHtmlOptions;
00181 
00182 GtkType    gtk_imhtml_get_type         (void);
00183 GtkWidget* gtk_imhtml_new              (void *, void *);
00184 
00185 void       gtk_imhtml_set_adjustments  (GtkIMHtml *imhtml,
00186                     GtkAdjustment *hadj,
00187                     GtkAdjustment *vadj);
00188 
00189 void       gtk_imhtml_associate_smiley (GtkIMHtml *imhtml,
00190                     gchar *sml, GtkIMHtmlSmiley *smiley);
00191 
00192 void       gtk_imhtml_remove_smileys   (GtkIMHtml *imhtml);
00193 
00194 void       gtk_imhtml_show_smileys     (GtkIMHtml *imhtml, gboolean show);
00195 
00196 void       gtk_imhtml_show_comments    (GtkIMHtml *imhtml, gboolean show);
00197 
00198 void       gtk_imhtml_html_shortcuts(GtkIMHtml *imhtml, gboolean allow);
00199 
00200 void       gtk_imhtml_smiley_shortcuts (GtkIMHtml *imhtml, gboolean allow);
00201 
00202 void       gtk_imhtml_set_protocol_name(GtkIMHtml *imhtml, gchar *protocol_name);
00203 
00204 #define    gtk_imhtml_append_text(x, y, z) \
00205  gtk_imhtml_append_text_with_images(x, y, z, NULL)
00206 
00207 void gtk_imhtml_append_text_with_images (GtkIMHtml *imhtml,
00208                            const gchar *text,
00209                            GtkIMHtmlOptions options,
00210                            GSList *images);
00211 void gtk_imhtml_insert_html_at_iter(GtkIMHtml        *imhtml,
00212                                     const gchar      *text,
00213                                     GtkIMHtmlOptions  options,
00214                                     GtkTextIter      *iter);
00215 void gtk_imhtml_scroll_to_end(GtkIMHtml *imhtml);
00216 void       gtk_imhtml_clear            (GtkIMHtml *imhtml);
00217 void       gtk_imhtml_page_up          (GtkIMHtml *imhtml);
00218 void       gtk_imhtml_page_down        (GtkIMHtml *imhtml);
00219 
00220 void gtk_imhtml_font_zoom(GtkIMHtml *imhtml, double zoom);
00221 
00222 GtkIMHtmlScalable *gtk_imhtml_scalable_new();
00223 GtkIMHtmlScalable *gtk_imhtml_image_new(GdkPixbuf *img, const gchar *filename);
00224 void gtk_imhtml_image_free(GtkIMHtmlScalable *);
00225 void gtk_imhtml_image_scale(GtkIMHtmlScalable *, int, int);
00226 void gtk_imhtml_image_add_to(GtkIMHtmlScalable *, GtkIMHtml *, GtkTextIter *);
00227 
00228 GtkIMHtmlScalable *gtk_imhtml_hr_new();
00229 void gtk_imhtml_hr_free(GtkIMHtmlScalable *);
00230 void gtk_imhtml_hr_scale(GtkIMHtmlScalable *, int, int);
00231 void gtk_imhtml_hr_add_to(GtkIMHtmlScalable *, GtkIMHtml *, GtkTextIter *);
00232 
00233 /* Search functions */
00234 gboolean gtk_imhtml_search_find(GtkIMHtml *imhtml, const gchar *text);
00235 void gtk_imhtml_search_clear(GtkIMHtml *imhtml);
00236 
00237 /* Editable stuff */
00238 void gtk_imhtml_set_editable(GtkIMHtml *imhtml, gboolean editable);
00239 void gtk_imhtml_set_whole_buffer_formatting_only(GtkIMHtml *imhtml, gboolean wbfo);
00240 void gtk_imhtml_set_format_functions(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons);
00241 void gtk_imhtml_get_current_format(GtkIMHtml *imhtml, gboolean *bold, gboolean *italic, gboolean *underline);
00242 gboolean gtk_imhtml_get_editable(GtkIMHtml *imhtml);
00243 gboolean gtk_imhtml_toggle_bold(GtkIMHtml *imhtml);
00244 gboolean gtk_imhtml_toggle_italic(GtkIMHtml *imhtml);
00245 gboolean gtk_imhtml_toggle_underline(GtkIMHtml *imhtml);
00246 gboolean gtk_imhtml_toggle_forecolor(GtkIMHtml *imhtml, const char *color);
00247 gboolean gtk_imhtml_toggle_backcolor(GtkIMHtml *imhtml, const char *color);
00248 gboolean gtk_imhtml_toggle_fontface(GtkIMHtml *imhtml, const char *face);
00249 void gtk_imhtml_toggle_link(GtkIMHtml *imhtml, const char *url);
00250 void gtk_imhtml_insert_link(GtkIMHtml *imhtml, GtkTextMark *mark, const char *url, const char *text);
00251 void gtk_imhtml_insert_smiley(GtkIMHtml *imhtml, const char *sml, char *smiley);
00252 void gtk_imhtml_insert_smiley_at_iter(GtkIMHtml *imhtml, const char *sml, char *smiley, GtkTextIter *iter);
00253 void gtk_imhtml_font_set_size(GtkIMHtml *imhtml, gint size);
00254 void gtk_imhtml_font_shrink(GtkIMHtml *imhtml);
00255 void gtk_imhtml_font_grow(GtkIMHtml *imhtml);
00256 char *gtk_imhtml_get_markup_range(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *end);
00257 char *gtk_imhtml_get_markup(GtkIMHtml *imhtml);
00258 /* returns a null terminated array of pointers to null terminated strings, each string for each line */
00259 /* g_strfreev() should be called on it */
00260 char **gtk_imhtml_get_markup_lines(GtkIMHtml *imhtml);
00261 char *gtk_imhtml_get_text(GtkIMHtml *imhtml, GtkTextIter *start, GtkTextIter *stop);
00262 
00263 #ifdef __cplusplus
00264 }
00265 #endif
00266 
00267 #endif

Generated on Sun Aug 29 03:45:05 2004 for gaim by doxygen 1.3.4