]> Pileus Git - ~andy/gtk/blob - gtk/gtktextiter.h
update to reflect text widget changes.
[~andy/gtk] / gtk / gtktextiter.h
1 #ifndef GTK_TEXT_ITER_H
2 #define GTK_TEXT_ITER_H
3
4 #include <gtk/gtktexttag.h>
5
6 #ifdef __cplusplus
7 extern "C" {
8 #endif /* __cplusplus */
9
10 /*
11  * Iter: represents a location in the text. Becomes invalid if the
12  * characters/pixmaps/widgets (indexable objects) in the text buffer
13  * are changed.
14  */
15
16 typedef struct _GtkTextBuffer GtkTextBuffer;
17
18 struct _GtkTextIter {
19   gpointer dummy1;
20   gpointer dummy2;
21   gint dummy3;
22   gint dummy4;
23   gint dummy10;
24   gint dummy11;
25   gint dummy5;
26   gint dummy6;
27   gpointer dummy7;
28   gpointer dummy8;
29   gint dummy9;
30   gpointer pad1;
31   guint pad2;
32 };
33
34
35 /* This is primarily intended for language bindings that want to avoid
36    a "buffer" argument to text insertions, deletions, etc. */
37 GtkTextBuffer *gtk_text_iter_get_buffer(const GtkTextIter *iter);
38
39 /*
40  * Life cycle
41  */
42
43 GtkTextIter *gtk_text_iter_copy     (const GtkTextIter *iter);
44 void         gtk_text_iter_free     (GtkTextIter       *iter);
45
46 /*
47  * Convert to different kinds of index
48  */
49
50 gint gtk_text_iter_get_offset      (const GtkTextIter *iter);
51 gint gtk_text_iter_get_line        (const GtkTextIter *iter);
52 gint gtk_text_iter_get_line_offset (const GtkTextIter *iter);
53 gint gtk_text_iter_get_line_index  (const GtkTextIter *iter);
54
55
56 /*
57  * "Dereference" operators
58  */
59 gunichar gtk_text_iter_get_char          (const GtkTextIter  *iter);
60
61 /* includes the 0xFFFD char for pixmaps/widgets, so char offsets
62    into the returned string map properly into buffer char offsets */
63 gchar   *gtk_text_iter_get_slice         (const GtkTextIter  *start,
64                                            const GtkTextIter  *end);
65
66 /* includes only text, no 0xFFFD */
67 gchar   *gtk_text_iter_get_text          (const GtkTextIter  *start,
68                                            const GtkTextIter  *end);
69 /* exclude invisible chars */
70 gchar   *gtk_text_iter_get_visible_slice (const GtkTextIter  *start,
71                                            const GtkTextIter  *end);
72 gchar   *gtk_text_iter_get_visible_text  (const GtkTextIter  *start,
73                                            const GtkTextIter  *end);
74
75 /* Returns TRUE if the iterator pointed at a pixmap */
76 gboolean gtk_text_iter_get_pixmap        (const GtkTextIter  *iter,
77                                           GdkPixmap          **pixmap,
78                                           GdkBitmap          **mask);
79
80 GSList  *gtk_text_iter_get_marks         (const GtkTextIter  *iter);
81
82 /* Return list of tags toggled at this point (toggled_on determines
83    whether the list is of on-toggles or off-toggles) */
84 GSList  *gtk_text_iter_get_toggled_tags  (const GtkTextIter  *iter,
85                                           gboolean             toggled_on);
86
87 gboolean gtk_text_iter_begins_tag        (const GtkTextIter  *iter,
88                                           GtkTextTag         *tag);
89
90 gboolean gtk_text_iter_ends_tag          (const GtkTextIter  *iter,
91                                           GtkTextTag         *tag);
92
93 gboolean gtk_text_iter_toggles_tag       (const GtkTextIter  *iter,
94                                            GtkTextTag         *tag);
95
96 gboolean gtk_text_iter_has_tag           (const GtkTextIter   *iter,
97                                            GtkTextTag          *tag);
98
99 gboolean gtk_text_iter_editable          (const GtkTextIter   *iter,
100                                           gboolean             default_setting);
101
102 gboolean gtk_text_iter_starts_line       (const GtkTextIter   *iter);
103 gboolean gtk_text_iter_ends_line         (const GtkTextIter   *iter);
104
105 gint     gtk_text_iter_get_chars_in_line (const GtkTextIter   *iter);
106
107 gboolean gtk_text_iter_get_style_values  (const GtkTextIter    *iter,
108                                           GtkTextStyleValues   *values);
109
110 gboolean gtk_text_iter_is_last           (const GtkTextIter    *iter);
111 gboolean gtk_text_iter_is_first          (const GtkTextIter    *iter);
112
113 /*
114  * Moving around the buffer
115  */
116
117 gboolean gtk_text_iter_next_char            (GtkTextIter *iter);
118 gboolean gtk_text_iter_prev_char            (GtkTextIter *iter);
119 gboolean gtk_text_iter_forward_chars        (GtkTextIter *iter,
120                                              gint         count);
121 gboolean gtk_text_iter_backward_chars       (GtkTextIter *iter,
122                                              gint         count);
123 gboolean gtk_text_iter_forward_line         (GtkTextIter *iter);
124 gboolean gtk_text_iter_backward_line        (GtkTextIter *iter);
125 gboolean gtk_text_iter_forward_lines        (GtkTextIter *iter,
126                                              gint         count);
127 gboolean gtk_text_iter_backward_lines       (GtkTextIter *iter,
128                                              gint         count);
129 gboolean gtk_text_iter_forward_word_ends    (GtkTextIter *iter,
130                                              gint         count);
131 gboolean gtk_text_iter_backward_word_starts (GtkTextIter *iter,
132                                              gint         count);
133 gboolean gtk_text_iter_forward_word_end     (GtkTextIter *iter);
134 gboolean gtk_text_iter_backward_word_start  (GtkTextIter *iter);
135
136 void     gtk_text_iter_set_offset         (GtkTextIter *iter,
137                                            gint         char_offset);
138 void     gtk_text_iter_set_line           (GtkTextIter *iter,
139                                            gint         line_number);
140 void     gtk_text_iter_set_line_offset    (GtkTextIter *iter,
141                                            gint         char_on_line);
142 void     gtk_text_iter_forward_to_end     (GtkTextIter *iter);
143 gboolean gtk_text_iter_forward_to_newline (GtkTextIter *iter);
144
145 /* returns TRUE if a toggle was found; NULL for the tag pointer
146    means "any tag toggle", otherwise the next toggle of the
147    specified tag is located. */
148 gboolean gtk_text_iter_forward_to_tag_toggle (GtkTextIter *iter,
149                                               GtkTextTag  *tag);
150
151 gboolean gtk_text_iter_backward_to_tag_toggle (GtkTextIter *iter,
152                                                GtkTextTag  *tag);
153
154 typedef gboolean (* GtkTextCharPredicate) (gunichar ch, gpointer user_data);
155
156 gboolean gtk_text_iter_forward_find_char      (GtkTextIter *iter,
157                                                GtkTextCharPredicate pred,
158                                                gpointer user_data);
159
160 gboolean gtk_text_iter_backward_find_char     (GtkTextIter *iter,
161                                                GtkTextCharPredicate pred,
162                                                gpointer user_data);
163
164 gboolean gtk_text_iter_forward_search         (GtkTextIter *iter,
165                                                const char  *str,
166                                                gboolean visible_only,
167                                                gboolean slice);
168
169 gboolean gtk_text_iter_backward_search        (GtkTextIter *iter,
170                                                const char  *str,
171                                                gboolean visible_only,
172                                                gboolean slice);
173
174 /*
175  * Comparisons
176  */
177 gboolean gtk_text_iter_equal           (const GtkTextIter *lhs,
178                                         const GtkTextIter *rhs);
179 gint     gtk_text_iter_compare         (const GtkTextIter *lhs,
180                                         const GtkTextIter *rhs);
181 gboolean gtk_text_iter_in_region       (const GtkTextIter *iter,
182                                         const GtkTextIter *start,
183                                         const GtkTextIter *end);
184
185 /* Put these two in ascending order */
186 void     gtk_text_iter_reorder         (GtkTextIter *first,
187                                          GtkTextIter *second);
188
189 /* Debug */
190 void     gtk_text_iter_spew            (const GtkTextIter *iter,
191                                          const gchar *desc);
192
193 #ifdef __cplusplus
194 }
195 #endif /* __cplusplus */
196
197 #endif
198
199