view src/gtkimhtml.h @ 1464:ae075ecc7c34

[gaim-migrate @ 1474] I got the "internet" keys on my keyboard working. <Creedence Clearwater playing....> o/~ and daddy always smiled, took me by the hand, saying someday, you'll understand. o/~ Next Track! <Searchers...> o/~ Seven little bottles of: Love Potion #9! o/~ Next! <Marcy Playground...> o/~ Blue... like water. Blue... like heaven has, allllll of the time o/~ Next! <Wat Tyler> o/~ I'm, going, to, fart in the face of my father, wank in the wig of a judge, piss in the whistle of a policeman, i bear them all a grudge o/~ Next! <Veruca Salt> o/~ Leave me! Right here! Cuz I don't wanna go! o/~ Next! <Turtles> o/~ Imagine me and you, I do, I think about you day and night, it's only right, to think about the girl you love, and hold her tight, so happy together! o/~ Next! Next! Led Zeppelin! Led Zep! Woohoo! I'm going to go listen to Led Zeppelin now. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sat, 03 Feb 2001 11:57:24 +0000
parents 36c56d591674
children 206f995a33f3
line wrap: on
line source

/*
 * GtkIMHtml
 *
 * Copyright (C) 2000, Eric Warmenhoven <warmenhoven@yahoo.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * 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 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
 *
 */

#ifndef __GTK_IMHTML_H
#define __GTK_IMHTML_H

#include <gdk/gdk.h>
#include <gtk/gtklayout.h>

#ifdef __cplusplus
extern "C" {
#endif

#define GTK_TYPE_IMHTML            (gtk_imhtml_get_type ())
#define GTK_IMHTML(obj)            (GTK_CHECK_CAST ((obj), GTK_TYPE_IMHTML, GtkIMHtml))
#define GTK_IMHTML_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_IMHTML, GtkIMHtmlClass))
#define GTK_IS_IMHTML(obj)         (GTK_CHECK_TYPE ((obj), GTK_TYPE_IMHTML))
#define GTK_IS_IMHTML_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_IMHTML))

typedef gchar** (*GtkIMHtmlImage) (gchar *url);

typedef struct _GtkIMHtml      GtkIMHtml;
typedef struct _GtkIMHtmlClass GtkIMHtmlClass;

struct _GtkIMHtml {
	GtkLayout layout;

	GdkFont *default_font;
	GdkColor *default_fg_color;
	GdkColor *default_bg_color;

	GdkCursor *hand_cursor;
	GdkCursor *arrow_cursor;

	GList *bits;
	GList *urls;

	guint sel_startx, sel_starty;
	guint sel_endx, sel_endy;
	gboolean selection;
	GString *selected_text;
	guint scroll_timer;

	guint x, y;
	guint xsize;
	guint llheight;
	guint llascent;
	GList *line;

	GtkIMHtmlImage img;

	gboolean smileys;
	gboolean comments;

	GHashTable *smiley_hash;
	gint smin, smax;
};

struct _GtkIMHtmlClass {
	GtkLayoutClass parent_class;

	void (*url_clicked) (GtkIMHtml *, const gchar *);
};

typedef enum
{
	GTK_IMHTML_NO_COLOURS   = 1 << 0,
	GTK_IMHTML_NO_FONTS     = 1 << 1,
	GTK_IMHTML_NO_COMMENTS  = 1 << 2,
	GTK_IMHTML_NO_TITLE     = 1 << 3,
	GTK_IMHTML_NO_NEWLINE   = 1 << 4,
	GTK_IMHTML_NO_SIZES	= 1 << 5,
	GTK_IMHTML_NO_SCROLL	= 1 << 6,
	GTK_IMHTML_RETURN_LOG	= 1 << 7
} GtkIMHtmlOptions;

GtkType    gtk_imhtml_get_type         (void);
GtkWidget* gtk_imhtml_new              (GtkAdjustment    *hadj,
					GtkAdjustment    *vadj);

void       gtk_imhtml_set_adjustments  (GtkIMHtml        *imhtml,
					GtkAdjustment    *hadj,
					GtkAdjustment    *vadj);

void       gtk_imhtml_set_defaults     (GtkIMHtml        *imhtml,
					GdkFont          *font,
					GdkColor         *fg_color,
					GdkColor         *bg_color);

void       gtk_imhtml_set_img_handler  (GtkIMHtml        *imhtml,
					GtkIMHtmlImage    handler);

void       gtk_imhtml_associate_smiley (GtkIMHtml        *imhtml,
					gchar            *text,
					gchar           **xpm);

void       gtk_imhtml_show_smileys     (GtkIMHtml        *imhtml,
					gboolean          show);

void       gtk_imhtml_show_comments    (GtkIMHtml        *imhtml,
					gboolean          show);

GString*   gtk_imhtml_append_text      (GtkIMHtml        *imhtml,
					const gchar      *text,
					GtkIMHtmlOptions  options);

#ifdef __cplusplus
}
#endif

#endif