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 
30 G_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 
38 typedef struct _GtkSourceBuffer GtkSourceBuffer;
39 typedef struct _GtkSourceBufferClass GtkSourceBufferClass;
40 typedef struct _GtkSourceBufferPrivate GtkSourceBufferPrivate;
41 typedef struct _GtkSourceBufferMarker GtkSourceBufferMarker;
42 
43 struct _GtkSourceBuffer {
44  GtkTextBuffer TextBuffer;
45 
46  GtkSourceBufferPrivate *priv;
47 };
48 
49 struct _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 
58 struct _GtkSourceBufferMarker {
59  int line;
60  char *name;
61 };
62 
63 /* Creation. */
64 GType gtk_source_buffer_get_type (void);
65 GtkSourceBuffer *gtk_source_buffer_new (GtkTextTagTable *table);
66 void gtk_source_buffer_attach_to_view (GtkSourceBuffer *buffer,
67  GtkTextView *view);
68 
69 /* Properties. */
70 void gtk_source_buffer_set_check_brackets (GtkSourceBuffer *buf,
71  gboolean check_brackets);
72 gboolean gtk_source_buffer_get_highlight (GtkSourceBuffer *buffer);
73 void gtk_source_buffer_set_highlight (GtkSourceBuffer *buf,
74  gboolean highlight);
75 
76 /* Tags methods. */
77 gint gtk_source_buffer_get_tag_start (GtkTextIter *iter);
78 gint gtk_source_buffer_get_tag_end (GtkTextIter *iter);
79 GtkSyntaxTag *gtk_source_buffer_iter_has_syntax_tag (GtkTextIter *iter);
80 
81 void gtk_source_buffer_highlight_region (GtkSourceBuffer *sbuf,
82  GtkTextIter *start,
83  GtkTextIter *end);
84 
85 /* Regex methods. */
86 gint gtk_source_buffer_regex_search (const gchar *text,
87  gint pos,
88  Regex *regex,
89  gboolean forward,
90  GtkSourceBufferMatch *match);
91 gint gtk_source_buffer_regex_match (const gchar *text,
92  gint pos,
93  gint end,
94  Regex *regex);
95 
96 GList *gtk_source_buffer_get_regex_tags (GtkSourceBuffer *buffer);
97 void gtk_source_buffer_purge_regex_tags (GtkSourceBuffer *buffer);
98 void gtk_source_buffer_install_regex_tags (GtkSourceBuffer *buffer,
99  GList *entries);
100 void gtk_source_buffer_sync_syntax_regex (GtkSourceBuffer *buffer);
101 GtkSyntaxTag *gtk_source_buffer_iter_has_syntax_tag (GtkTextIter *iter);
102 
103 /* Get only the syntax, pattern, or embedded entries. */
104 GList *gtk_source_buffer_get_syntax_entries (GtkSourceBuffer *buffer);
105 GList *gtk_source_buffer_get_pattern_entries (GtkSourceBuffer *buffer);
106 GList *gtk_source_buffer_get_embedded_entries (GtkSourceBuffer *buffer);
107 
108 /* Utility methods. */
109 gchar *gtk_source_buffer_convert_to_html (GtkSourceBuffer *buffer,
110  const gchar *title);
111 gboolean gtk_source_buffer_find_bracket_match (GtkTextIter *orig);
112 
113 /* Undo/redo methods. */
114 gboolean gtk_source_buffer_can_undo (const GtkSourceBuffer *buffer);
115 gboolean gtk_source_buffer_can_redo (const GtkSourceBuffer *buffer);
116 
117 void gtk_source_buffer_undo (GtkSourceBuffer *buffer);
118 void gtk_source_buffer_redo (GtkSourceBuffer *buffer);
119 
120 int gtk_source_buffer_get_undo_levels (GtkSourceBuffer *buffer);
121 void gtk_source_buffer_set_undo_levels (GtkSourceBuffer *buffer,
122  int undo_levels);
123 
124 void gtk_source_buffer_begin_not_undoable_action (GtkSourceBuffer *buffer);
125 void gtk_source_buffer_end_not_undoable_action (GtkSourceBuffer *buffer);
126 
127 /* Line marker methods. */
128 void gtk_source_buffer_line_add_marker (GtkSourceBuffer *buffer,
129  gint line,
130  const gchar *marker);
131 void gtk_source_buffer_line_set_marker (GtkSourceBuffer *buffer,
132  gint line,
133  const gchar *marker);
134 gboolean gtk_source_buffer_line_remove_marker (GtkSourceBuffer *buffer,
135  gint line,
136  const gchar *marker);
137 const GList *gtk_source_buffer_line_get_markers (GtkSourceBuffer *buffer,
138  gint line);
139 gint gtk_source_buffer_line_has_markers (GtkSourceBuffer *buffer,
140  gint line);
141 gint gtk_source_buffer_line_remove_markers (GtkSourceBuffer *buffer,
142  gint line);
143 GList *gtk_source_buffer_get_all_markers (GtkSourceBuffer *buffer);
144 gint gtk_source_buffer_remove_all_markers (GtkSourceBuffer *buffer,
145  gint line_start,
146  gint line_end);
147 
148 /* IO utility methods. */
149 gboolean gtk_source_buffer_load (GtkSourceBuffer *buffer,
150  const gchar *filename,
151  GError**error);
152 gboolean gtk_source_buffer_save (GtkSourceBuffer *buffer,
153  const gchar *filename,
154  GError**error);
155 gboolean gtk_source_buffer_load_with_character_encoding (GtkSourceBuffer *buffer,
156  const gchar *filename,
157  const gchar *encoding,
158  GError**error);
159 gboolean gtk_source_buffer_save_with_character_encoding (GtkSourceBuffer *buffer,
160  const gchar *filename,
161  const gchar *encoding,
162  GError **error);
163 
164 G_END_DECLS
165 
166 #endif /* __GTK_SOURCE_BUFFER_H__ */