vdk 2.4.0
gtksourcebuffer.h
1/* gtksourcebuffer.h
2 *
3 * Copyright (C) 1999,2000,2001,2002 by:
4 * Mikael Hermansson <tyan@linux.se>
5 * Chris Phelps <chicane@reninet.com>
6 * Jeroen Zwartepoorte <jeroen@xs4all.nl>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21 */
22
23#ifndef __GTK_SOURCE_BUFFER_H__
24#define __GTK_SOURCE_BUFFER_H__
25
26#include <regex.h>
27#include <gtk/gtk.h>
28#include <vdk/gtksourcetag.h>
29
30G_BEGIN_DECLS
31
32#define GTK_TYPE_SOURCE_BUFFER (gtk_source_buffer_get_type ())
33#define GTK_SOURCE_BUFFER(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_SOURCE_BUFFER, GtkSourceBuffer))
34#define GTK_SOURCE_BUFFER_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_SOURCE_BUFFER, GtkSourceBufferClass))
35#define GTK_IS_SOURCE_BUFFER(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_SOURCE_BUFFER))
36#define GTK_IS_SOURCE_BUFFER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_SOURCE_BUFFER))
37
38typedef struct _GtkSourceBuffer GtkSourceBuffer;
39typedef struct _GtkSourceBufferClass GtkSourceBufferClass;
40typedef struct _GtkSourceBufferPrivate GtkSourceBufferPrivate;
41typedef struct _GtkSourceBufferMarker GtkSourceBufferMarker;
42
43struct _GtkSourceBuffer {
44 GtkTextBuffer TextBuffer;
45
46 GtkSourceBufferPrivate *priv;
47};
48
49struct _GtkSourceBufferClass {
50 GtkTextBufferClass parent_class;
51
52 void (* can_undo) (GtkSourceBuffer *buffer,
53 gboolean can_undo);
54 void (* can_redo) (GtkSourceBuffer *buffer,
55 gboolean can_redo);
56};
57
58struct _GtkSourceBufferMarker {
59 int line;
60 char *name;
61};
62
63/* Creation. */
64GType gtk_source_buffer_get_type (void);
65GtkSourceBuffer *gtk_source_buffer_new (GtkTextTagTable *table);
66void gtk_source_buffer_attach_to_view (GtkSourceBuffer *buffer,
67 GtkTextView *view);
68
69/* Properties. */
70void gtk_source_buffer_set_check_brackets (GtkSourceBuffer *buf,
71 gboolean check_brackets);
72gboolean gtk_source_buffer_get_highlight (GtkSourceBuffer *buffer);
73void gtk_source_buffer_set_highlight (GtkSourceBuffer *buf,
74 gboolean highlight);
75
76/* Tags methods. */
77gint gtk_source_buffer_get_tag_start (GtkTextIter *iter);
78gint gtk_source_buffer_get_tag_end (GtkTextIter *iter);
79GtkSyntaxTag *gtk_source_buffer_iter_has_syntax_tag (GtkTextIter *iter);
80
81void gtk_source_buffer_highlight_region (GtkSourceBuffer *sbuf,
82 GtkTextIter *start,
83 GtkTextIter *end);
84
85/* Regex methods. */
86gint gtk_source_buffer_regex_search (const gchar *text,
87 gint pos,
88 Regex *regex,
89 gboolean forward,
90 GtkSourceBufferMatch *match);
91gint gtk_source_buffer_regex_match (const gchar *text,
92 gint pos,
93 gint end,
94 Regex *regex);
95
96GList *gtk_source_buffer_get_regex_tags (GtkSourceBuffer *buffer);
97void gtk_source_buffer_purge_regex_tags (GtkSourceBuffer *buffer);
98void gtk_source_buffer_install_regex_tags (GtkSourceBuffer *buffer,
99 GList *entries);
100void gtk_source_buffer_sync_syntax_regex (GtkSourceBuffer *buffer);
101GtkSyntaxTag *gtk_source_buffer_iter_has_syntax_tag (GtkTextIter *iter);
102
103/* Get only the syntax, pattern, or embedded entries. */
104GList *gtk_source_buffer_get_syntax_entries (GtkSourceBuffer *buffer);
105GList *gtk_source_buffer_get_pattern_entries (GtkSourceBuffer *buffer);
106GList *gtk_source_buffer_get_embedded_entries (GtkSourceBuffer *buffer);
107
108/* Utility methods. */
109gchar *gtk_source_buffer_convert_to_html (GtkSourceBuffer *buffer,
110 const gchar *title);
111gboolean gtk_source_buffer_find_bracket_match (GtkTextIter *orig);
112
113/* Undo/redo methods. */
114gboolean gtk_source_buffer_can_undo (const GtkSourceBuffer *buffer);
115gboolean gtk_source_buffer_can_redo (const GtkSourceBuffer *buffer);
116
117void gtk_source_buffer_undo (GtkSourceBuffer *buffer);
118void gtk_source_buffer_redo (GtkSourceBuffer *buffer);
119
120int gtk_source_buffer_get_undo_levels (GtkSourceBuffer *buffer);
121void gtk_source_buffer_set_undo_levels (GtkSourceBuffer *buffer,
122 int undo_levels);
123
124void gtk_source_buffer_begin_not_undoable_action (GtkSourceBuffer *buffer);
125void gtk_source_buffer_end_not_undoable_action (GtkSourceBuffer *buffer);
126
127/* Line marker methods. */
128void gtk_source_buffer_line_add_marker (GtkSourceBuffer *buffer,
129 gint line,
130 const gchar *marker);
131void gtk_source_buffer_line_set_marker (GtkSourceBuffer *buffer,
132 gint line,
133 const gchar *marker);
134gboolean gtk_source_buffer_line_remove_marker (GtkSourceBuffer *buffer,
135 gint line,
136 const gchar *marker);
137const GList *gtk_source_buffer_line_get_markers (GtkSourceBuffer *buffer,
138 gint line);
139gint gtk_source_buffer_line_has_markers (GtkSourceBuffer *buffer,
140 gint line);
141gint gtk_source_buffer_line_remove_markers (GtkSourceBuffer *buffer,
142 gint line);
143GList *gtk_source_buffer_get_all_markers (GtkSourceBuffer *buffer);
144gint gtk_source_buffer_remove_all_markers (GtkSourceBuffer *buffer,
145 gint line_start,
146 gint line_end);
147
148/* IO utility methods. */
149gboolean gtk_source_buffer_load (GtkSourceBuffer *buffer,
150 const gchar *filename,
151 GError**error);
152gboolean gtk_source_buffer_save (GtkSourceBuffer *buffer,
153 const gchar *filename,
154 GError**error);
155gboolean gtk_source_buffer_load_with_character_encoding (GtkSourceBuffer *buffer,
156 const gchar *filename,
157 const gchar *encoding,
158 GError**error);
159gboolean gtk_source_buffer_save_with_character_encoding (GtkSourceBuffer *buffer,
160 const gchar *filename,
161 const gchar *encoding,
162 GError **error);
163
164G_END_DECLS
165
166#endif /* __GTK_SOURCE_BUFFER_H__ */