]> Pileus Git - ~andy/gtk/blob - gtk/gtktextiter.h
Get widgets working on the btree/buffer side. Display of them still
[~andy/gtk] / gtk / gtktextiter.h
1 /* GTK - The GIMP Toolkit
2  * gtktextiter.h Copyright (C) 2000 Red Hat, Inc.
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the
16  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17  * Boston, MA 02111-1307, USA.
18  */
19
20 /*
21  * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
22  * file for a list of people on the GTK+ Team.  See the ChangeLog
23  * files for a list of changes.  These files are distributed with
24  * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
25  */
26
27 #ifndef GTK_TEXT_ITER_H
28 #define GTK_TEXT_ITER_H
29
30 #include <gtk/gtktexttag.h>
31 #include <gtk/gtktextchild.h>
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif /* __cplusplus */
36
37 /*
38  * Iter: represents a location in the text. Becomes invalid if the
39  * characters/pixmaps/widgets (indexable objects) in the text buffer
40  * are changed.
41  */
42
43 typedef struct _GtkTextBuffer GtkTextBuffer;
44
45 struct _GtkTextIter {
46   gpointer dummy1;
47   gpointer dummy2;
48   gint dummy3;
49   gint dummy4;
50   gint dummy5;
51   gint dummy6;
52   gint dummy7;
53   gint dummy8;
54   gpointer dummy9;
55   gpointer dummy10;
56   gint dummy11;
57   gint dummy12;
58 };
59
60
61 /* This is primarily intended for language bindings that want to avoid
62    a "buffer" argument to text insertions, deletions, etc. */
63 GtkTextBuffer *gtk_text_iter_get_buffer (const GtkTextIter *iter);
64
65 /*
66  * Life cycle
67  */
68
69 GtkTextIter *gtk_text_iter_copy     (const GtkTextIter *iter);
70 void         gtk_text_iter_free     (GtkTextIter       *iter);
71
72 /*
73  * Convert to different kinds of index
74  */
75
76 gint gtk_text_iter_get_offset      (const GtkTextIter *iter);
77 gint gtk_text_iter_get_line        (const GtkTextIter *iter);
78 gint gtk_text_iter_get_line_offset (const GtkTextIter *iter);
79 gint gtk_text_iter_get_line_index  (const GtkTextIter *iter);
80
81
82 /*
83  * "Dereference" operators
84  */
85 gunichar gtk_text_iter_get_char          (const GtkTextIter  *iter);
86
87 /* includes the 0xFFFD char for pixmaps/widgets, so char offsets
88    into the returned string map properly into buffer char offsets */
89 gchar   *gtk_text_iter_get_slice         (const GtkTextIter  *start,
90                                           const GtkTextIter  *end);
91
92 /* includes only text, no 0xFFFD */
93 gchar   *gtk_text_iter_get_text          (const GtkTextIter  *start,
94                                           const GtkTextIter  *end);
95 /* exclude invisible chars */
96 gchar   *gtk_text_iter_get_visible_slice (const GtkTextIter  *start,
97                                           const GtkTextIter  *end);
98 gchar   *gtk_text_iter_get_visible_text  (const GtkTextIter  *start,
99                                           const GtkTextIter  *end);
100
101 GdkPixbuf* gtk_text_iter_get_pixbuf (const GtkTextIter *iter);
102 GSList  *  gtk_text_iter_get_marks  (const GtkTextIter *iter);
103
104 GtkTextChildAnchor* gtk_text_iter_get_child_anchor (const GtkTextIter *iter);
105
106 /* Return list of tags toggled at this point (toggled_on determines
107    whether the list is of on-toggles or off-toggles) */
108 GSList  *gtk_text_iter_get_toggled_tags  (const GtkTextIter  *iter,
109                                           gboolean             toggled_on);
110
111 gboolean gtk_text_iter_begins_tag        (const GtkTextIter  *iter,
112                                           GtkTextTag         *tag);
113
114 gboolean gtk_text_iter_ends_tag          (const GtkTextIter  *iter,
115                                           GtkTextTag         *tag);
116
117 gboolean gtk_text_iter_toggles_tag       (const GtkTextIter  *iter,
118                                           GtkTextTag         *tag);
119
120 gboolean gtk_text_iter_has_tag           (const GtkTextIter   *iter,
121                                           GtkTextTag          *tag);
122
123 gboolean gtk_text_iter_editable          (const GtkTextIter   *iter,
124                                           gboolean             default_setting);
125
126 gboolean gtk_text_iter_starts_line       (const GtkTextIter   *iter);
127 gboolean gtk_text_iter_ends_line         (const GtkTextIter   *iter);
128
129 gint     gtk_text_iter_get_chars_in_line (const GtkTextIter   *iter);
130
131 gboolean gtk_text_iter_get_attributes    (const GtkTextIter    *iter,
132                                           GtkTextAttributes   *values);
133
134 gboolean gtk_text_iter_is_last           (const GtkTextIter    *iter);
135 gboolean gtk_text_iter_is_first          (const GtkTextIter    *iter);
136
137 /*
138  * Moving around the buffer
139  */
140
141 gboolean gtk_text_iter_next_char            (GtkTextIter *iter);
142 gboolean gtk_text_iter_prev_char            (GtkTextIter *iter);
143 gboolean gtk_text_iter_forward_chars        (GtkTextIter *iter,
144                                              gint         count);
145 gboolean gtk_text_iter_backward_chars       (GtkTextIter *iter,
146                                              gint         count);
147 gboolean gtk_text_iter_forward_line         (GtkTextIter *iter);
148 gboolean gtk_text_iter_backward_line        (GtkTextIter *iter);
149 gboolean gtk_text_iter_forward_lines        (GtkTextIter *iter,
150                                              gint         count);
151 gboolean gtk_text_iter_backward_lines       (GtkTextIter *iter,
152                                              gint         count);
153 gboolean gtk_text_iter_forward_word_ends    (GtkTextIter *iter,
154                                              gint         count);
155 gboolean gtk_text_iter_backward_word_starts (GtkTextIter *iter,
156                                              gint         count);
157 gboolean gtk_text_iter_forward_word_end     (GtkTextIter *iter);
158 gboolean gtk_text_iter_backward_word_start  (GtkTextIter *iter);
159
160 void     gtk_text_iter_set_offset         (GtkTextIter *iter,
161                                            gint         char_offset);
162 void     gtk_text_iter_set_line           (GtkTextIter *iter,
163                                            gint         line_number);
164 void     gtk_text_iter_set_line_offset    (GtkTextIter *iter,
165                                            gint         char_on_line);
166 void     gtk_text_iter_set_line_index     (GtkTextIter *iter,
167                                            gint         byte_on_line);
168 void     gtk_text_iter_forward_to_end     (GtkTextIter *iter);
169 gboolean gtk_text_iter_forward_to_newline (GtkTextIter *iter);
170
171
172 /* returns TRUE if a toggle was found; NULL for the tag pointer
173    means "any tag toggle", otherwise the next toggle of the
174    specified tag is located. */
175 gboolean gtk_text_iter_forward_to_tag_toggle (GtkTextIter *iter,
176                                               GtkTextTag  *tag);
177
178 gboolean gtk_text_iter_backward_to_tag_toggle (GtkTextIter *iter,
179                                                GtkTextTag  *tag);
180
181 typedef gboolean (* GtkTextCharPredicate) (gunichar ch, gpointer user_data);
182
183 gboolean gtk_text_iter_forward_find_char      (GtkTextIter *iter,
184                                                GtkTextCharPredicate pred,
185                                                gpointer user_data);
186
187 gboolean gtk_text_iter_backward_find_char     (GtkTextIter *iter,
188                                                GtkTextCharPredicate pred,
189                                                gpointer user_data);
190
191 gboolean gtk_text_iter_forward_search  (const GtkTextIter *iter,
192                                         const gchar       *str,
193                                         gboolean           visible_only,
194                                         gboolean           slice,
195                                         GtkTextIter       *match_start,
196                                         GtkTextIter       *match_end);
197 gboolean gtk_text_iter_backward_search (const GtkTextIter *iter,
198                                         const gchar       *str,
199                                         gboolean           visible_only,
200                                         gboolean           slice,
201                                         GtkTextIter       *match_start,
202                                         GtkTextIter       *match_end);
203
204
205
206 /*
207  * Comparisons
208  */
209 gboolean gtk_text_iter_equal           (const GtkTextIter *lhs,
210                                         const GtkTextIter *rhs);
211 gint     gtk_text_iter_compare         (const GtkTextIter *lhs,
212                                         const GtkTextIter *rhs);
213 gboolean gtk_text_iter_in_range        (const GtkTextIter *iter,
214                                         const GtkTextIter *start,
215                                         const GtkTextIter *end);
216
217 /* Put these two in ascending order */
218 void     gtk_text_iter_reorder         (GtkTextIter *first,
219                                         GtkTextIter *second);
220
221 /* Debug */
222 void     gtk_text_iter_spew            (const GtkTextIter *iter,
223                                         const gchar *desc);
224
225 #ifdef __cplusplus
226 }
227 #endif /* __cplusplus */
228
229 #endif
230
231