5 #include <gtk/gtkadjustment.h>
6 #include <gtk/gtkwidget.h>
9 /*#define GTK_XTEXT(obj) GTK_CHECK_CAST (obj, gtk_xtext_get_type (), GtkXText)*/
10 #define GTK_XTEXT(obj) ((GtkXText*)obj)
11 #define GTK_XTEXT_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, gtk_xtext_get_type (), GtkXTextClass)
12 #define GTK_IS_XTEXT(obj) GTK_CHECK_TYPE (obj, gtk_xtext_get_type ())
18 #define ATTR_BOLD '\002'
19 #define ATTR_COLOR '\003'
20 #define ATTR_BEEP '\007'
21 #define ATTR_RESET '\017'
22 #define ATTR_REVERSE '\026'
23 #define ATTR_ESCAPE '\033'
24 #define ATTR_UNDERLINE '\037'
26 typedef struct _GtkXText GtkXText;
27 typedef struct _GtkXTextClass GtkXTextClass;
29 typedef struct textentry
31 struct textentry *next;
49 gfloat old_value; /* last known adj->value */
50 GdkPixmap *pixmap; /* 0 = use palette[19] */
51 GdkDrawable *draw_buf; /* points to ->window or ->tmp_pix */
52 GdkPixmap *tmp_pix; /* double buffer */
53 GdkCursor *hand_cursor;
67 GdkGC *bgc; /* backing pixmap */
68 GdkGC *fgc; /* text foreground color */
69 GdkGC *light_gc; /* sep bar */
73 textentry *text_first;
76 gint io_tag; /* for delayed refresh events */
77 gint add_io_tag; /* "" when adding new text */
78 gint scroll_tag; /* marking-scroll timeout */
83 guint16 fontwidth[256]; /* each char's width, only for FONT_1BYTE type */
84 int space_width; /* width (pixels) of the space " " character */
85 int stamp_width; /* width of "[88:88:88]" */
87 int indent; /* position of separator (pixels) from left */
90 int select_start_adj; /* the adj->value when the selection started */
96 textentry *last_ent_start; /* this basically describes the last rendered */
97 textentry *last_ent_end; /* selection. */
98 int last_offset_start;
101 textentry *old_ent_start;
102 textentry *old_ent_end;
108 textentry *pagetop_ent; /* what's at xtext->adj->value */
113 int depth; /* gdk window depth */
117 char num[8]; /* for parsing mirc color */
118 int nc; /* offset into xtext->num */
120 textentry *hilight_ent;
124 short grid_offset[256];
126 GtkWidget *(*error_function) (char *text);
127 int (*urlcheck_function) (GtkXText * xtext, char *word);
129 unsigned char scratch_buffer[4096];
131 unsigned int fixed_width_font:1;
132 unsigned int double_buffer:1;
133 unsigned int auto_indent:1;
134 unsigned int moving_separator:1;
135 unsigned int time_stamp:1;
136 unsigned int scrollbar_down:1;
137 unsigned int word_or_line_select:1;
138 unsigned int color_paste:1;
139 unsigned int thinline:1;
140 unsigned int parsing_backcolor:1;
141 unsigned int parsing_color:1;
142 unsigned int backcolor:1;
143 unsigned int button_down:1;
145 unsigned int underline:1;
146 unsigned int reverse:1;
147 unsigned int transparent:1;
148 unsigned int separator:1;
149 unsigned int shaded:1;
150 unsigned int wordwrap:1;
151 unsigned int dont_render:1;
152 unsigned int cursor_hand:1;
153 unsigned int skip_fills:1;
154 unsigned int skip_border_fills:1;
155 unsigned int do_underline_fills_only:1;
158 struct _GtkXTextClass
160 GtkWidgetClass parent_class;
161 void (*word_click) (GtkXText * xtext, char *word, GdkEventButton * event);
164 GtkWidget *gtk_xtext_new (int indent, int separator);
165 guint gtk_xtext_get_type (void);
166 void gtk_xtext_append (GtkXText * xtext, char *text, int len);
167 void gtk_xtext_append_indent (GtkXText * xtext,
168 char *left_text, int left_len,
169 char *right_text, int right_len);
170 void gtk_xtext_set_font (GtkXText * xtext, GdkFont * font, char *name);
171 void gtk_xtext_set_background (GtkXText * xtext, GdkPixmap * pixmap,
172 int trans, int shaded);
173 void gtk_xtext_set_palette (GtkXText * xtext, GdkColor palette[]);
174 void gtk_xtext_remove_lines (GtkXText * xtext, int lines, int refresh);
175 gchar *gtk_xtext_get_chars (GtkXText * xtext);
176 void gtk_xtext_refresh (GtkXText * xtext, int do_trans);
177 void gtk_xtext_thaw (GtkXText * xtext);
178 void gtk_xtext_freeze (GtkXText * xtext);
179 void *gtk_xtext_search (GtkXText * xtext, char *text, void *start);
180 char *gtk_xtext_strip_color (unsigned char *text, int len, char *outbuf, int *newlen);