Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 
 
 

308 řádky
13 KiB

  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. * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
  21. * file for a list of people on the GTK+ Team. See the ChangeLog
  22. * files for a list of changes. These files are distributed with
  23. * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
  24. */
  25. #if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
  26. #error "Only <gtk/gtk.h> can be included directly."
  27. #endif
  28. #ifndef __GTK_TEXT_ITER_H__
  29. #define __GTK_TEXT_ITER_H__
  30. #include <gtk/gtktexttag.h>
  31. #include <gtk/gtktextchild.h>
  32. G_BEGIN_DECLS
  33. typedef enum {
  34. GTK_TEXT_SEARCH_VISIBLE_ONLY = 1 << 0,
  35. GTK_TEXT_SEARCH_TEXT_ONLY = 1 << 1
  36. /* Possible future plans: SEARCH_CASE_INSENSITIVE, SEARCH_REGEXP */
  37. } GtkTextSearchFlags;
  38. /*
  39. * Iter: represents a location in the text. Becomes invalid if the
  40. * characters/pixmaps/widgets (indexable objects) in the text buffer
  41. * are changed.
  42. */
  43. typedef struct _GtkTextBuffer GtkTextBuffer;
  44. #define GTK_TYPE_TEXT_ITER (gtk_text_iter_get_type ())
  45. struct _GtkTextIter {
  46. /* GtkTextIter is an opaque datatype; ignore all these fields.
  47. * Initialize the iter with gtk_text_buffer_get_iter_*
  48. * functions
  49. */
  50. /*< private >*/
  51. gpointer dummy1;
  52. gpointer dummy2;
  53. gint dummy3;
  54. gint dummy4;
  55. gint dummy5;
  56. gint dummy6;
  57. gint dummy7;
  58. gint dummy8;
  59. gpointer dummy9;
  60. gpointer dummy10;
  61. gint dummy11;
  62. gint dummy12;
  63. /* padding */
  64. gint dummy13;
  65. gpointer dummy14;
  66. };
  67. /* This is primarily intended for language bindings that want to avoid
  68. a "buffer" argument to text insertions, deletions, etc. */
  69. GtkTextBuffer *gtk_text_iter_get_buffer (const GtkTextIter *iter);
  70. /*
  71. * Life cycle
  72. */
  73. GtkTextIter *gtk_text_iter_copy (const GtkTextIter *iter);
  74. void gtk_text_iter_free (GtkTextIter *iter);
  75. GType gtk_text_iter_get_type (void) G_GNUC_CONST;
  76. /*
  77. * Convert to different kinds of index
  78. */
  79. gint gtk_text_iter_get_offset (const GtkTextIter *iter);
  80. gint gtk_text_iter_get_line (const GtkTextIter *iter);
  81. gint gtk_text_iter_get_line_offset (const GtkTextIter *iter);
  82. gint gtk_text_iter_get_line_index (const GtkTextIter *iter);
  83. gint gtk_text_iter_get_visible_line_offset (const GtkTextIter *iter);
  84. gint gtk_text_iter_get_visible_line_index (const GtkTextIter *iter);
  85. /*
  86. * "Dereference" operators
  87. */
  88. gunichar gtk_text_iter_get_char (const GtkTextIter *iter);
  89. /* includes the 0xFFFC char for pixmaps/widgets, so char offsets
  90. * into the returned string map properly into buffer char offsets
  91. */
  92. gchar *gtk_text_iter_get_slice (const GtkTextIter *start,
  93. const GtkTextIter *end);
  94. /* includes only text, no 0xFFFC */
  95. gchar *gtk_text_iter_get_text (const GtkTextIter *start,
  96. const GtkTextIter *end);
  97. /* exclude invisible chars */
  98. gchar *gtk_text_iter_get_visible_slice (const GtkTextIter *start,
  99. const GtkTextIter *end);
  100. gchar *gtk_text_iter_get_visible_text (const GtkTextIter *start,
  101. const GtkTextIter *end);
  102. GdkPixbuf* gtk_text_iter_get_pixbuf (const GtkTextIter *iter);
  103. GSList * gtk_text_iter_get_marks (const GtkTextIter *iter);
  104. GtkTextChildAnchor* gtk_text_iter_get_child_anchor (const GtkTextIter *iter);
  105. /* Return list of tags toggled at this point (toggled_on determines
  106. * whether the list is of on-toggles or off-toggles)
  107. */
  108. GSList *gtk_text_iter_get_toggled_tags (const GtkTextIter *iter,
  109. gboolean toggled_on);
  110. gboolean gtk_text_iter_begins_tag (const GtkTextIter *iter,
  111. GtkTextTag *tag);
  112. gboolean gtk_text_iter_ends_tag (const GtkTextIter *iter,
  113. GtkTextTag *tag);
  114. gboolean gtk_text_iter_toggles_tag (const GtkTextIter *iter,
  115. GtkTextTag *tag);
  116. gboolean gtk_text_iter_has_tag (const GtkTextIter *iter,
  117. GtkTextTag *tag);
  118. GSList *gtk_text_iter_get_tags (const GtkTextIter *iter);
  119. gboolean gtk_text_iter_editable (const GtkTextIter *iter,
  120. gboolean default_setting);
  121. gboolean gtk_text_iter_can_insert (const GtkTextIter *iter,
  122. gboolean default_editability);
  123. gboolean gtk_text_iter_starts_word (const GtkTextIter *iter);
  124. gboolean gtk_text_iter_ends_word (const GtkTextIter *iter);
  125. gboolean gtk_text_iter_inside_word (const GtkTextIter *iter);
  126. gboolean gtk_text_iter_starts_sentence (const GtkTextIter *iter);
  127. gboolean gtk_text_iter_ends_sentence (const GtkTextIter *iter);
  128. gboolean gtk_text_iter_inside_sentence (const GtkTextIter *iter);
  129. gboolean gtk_text_iter_starts_line (const GtkTextIter *iter);
  130. gboolean gtk_text_iter_ends_line (const GtkTextIter *iter);
  131. gboolean gtk_text_iter_is_cursor_position (const GtkTextIter *iter);
  132. gint gtk_text_iter_get_chars_in_line (const GtkTextIter *iter);
  133. gint gtk_text_iter_get_bytes_in_line (const GtkTextIter *iter);
  134. gboolean gtk_text_iter_get_attributes (const GtkTextIter *iter,
  135. GtkTextAttributes *values);
  136. PangoLanguage* gtk_text_iter_get_language (const GtkTextIter *iter);
  137. gboolean gtk_text_iter_is_end (const GtkTextIter *iter);
  138. gboolean gtk_text_iter_is_start (const GtkTextIter *iter);
  139. /*
  140. * Moving around the buffer
  141. */
  142. gboolean gtk_text_iter_forward_char (GtkTextIter *iter);
  143. gboolean gtk_text_iter_backward_char (GtkTextIter *iter);
  144. gboolean gtk_text_iter_forward_chars (GtkTextIter *iter,
  145. gint count);
  146. gboolean gtk_text_iter_backward_chars (GtkTextIter *iter,
  147. gint count);
  148. gboolean gtk_text_iter_forward_line (GtkTextIter *iter);
  149. gboolean gtk_text_iter_backward_line (GtkTextIter *iter);
  150. gboolean gtk_text_iter_forward_lines (GtkTextIter *iter,
  151. gint count);
  152. gboolean gtk_text_iter_backward_lines (GtkTextIter *iter,
  153. gint count);
  154. gboolean gtk_text_iter_forward_word_end (GtkTextIter *iter);
  155. gboolean gtk_text_iter_backward_word_start (GtkTextIter *iter);
  156. gboolean gtk_text_iter_forward_word_ends (GtkTextIter *iter,
  157. gint count);
  158. gboolean gtk_text_iter_backward_word_starts (GtkTextIter *iter,
  159. gint count);
  160. gboolean gtk_text_iter_forward_visible_line (GtkTextIter *iter);
  161. gboolean gtk_text_iter_backward_visible_line (GtkTextIter *iter);
  162. gboolean gtk_text_iter_forward_visible_lines (GtkTextIter *iter,
  163. gint count);
  164. gboolean gtk_text_iter_backward_visible_lines (GtkTextIter *iter,
  165. gint count);
  166. gboolean gtk_text_iter_forward_visible_word_end (GtkTextIter *iter);
  167. gboolean gtk_text_iter_backward_visible_word_start (GtkTextIter *iter);
  168. gboolean gtk_text_iter_forward_visible_word_ends (GtkTextIter *iter,
  169. gint count);
  170. gboolean gtk_text_iter_backward_visible_word_starts (GtkTextIter *iter,
  171. gint count);
  172. gboolean gtk_text_iter_forward_sentence_end (GtkTextIter *iter);
  173. gboolean gtk_text_iter_backward_sentence_start (GtkTextIter *iter);
  174. gboolean gtk_text_iter_forward_sentence_ends (GtkTextIter *iter,
  175. gint count);
  176. gboolean gtk_text_iter_backward_sentence_starts (GtkTextIter *iter,
  177. gint count);
  178. /* cursor positions are almost equivalent to chars, but not quite;
  179. * in some languages, you can't put the cursor between certain
  180. * chars. Also, you can't put the cursor between \r\n at the end
  181. * of a line.
  182. */
  183. gboolean gtk_text_iter_forward_cursor_position (GtkTextIter *iter);
  184. gboolean gtk_text_iter_backward_cursor_position (GtkTextIter *iter);
  185. gboolean gtk_text_iter_forward_cursor_positions (GtkTextIter *iter,
  186. gint count);
  187. gboolean gtk_text_iter_backward_cursor_positions (GtkTextIter *iter,
  188. gint count);
  189. gboolean gtk_text_iter_forward_visible_cursor_position (GtkTextIter *iter);
  190. gboolean gtk_text_iter_backward_visible_cursor_position (GtkTextIter *iter);
  191. gboolean gtk_text_iter_forward_visible_cursor_positions (GtkTextIter *iter,
  192. gint count);
  193. gboolean gtk_text_iter_backward_visible_cursor_positions (GtkTextIter *iter,
  194. gint count);
  195. void gtk_text_iter_set_offset (GtkTextIter *iter,
  196. gint char_offset);
  197. void gtk_text_iter_set_line (GtkTextIter *iter,
  198. gint line_number);
  199. void gtk_text_iter_set_line_offset (GtkTextIter *iter,
  200. gint char_on_line);
  201. void gtk_text_iter_set_line_index (GtkTextIter *iter,
  202. gint byte_on_line);
  203. void gtk_text_iter_forward_to_end (GtkTextIter *iter);
  204. gboolean gtk_text_iter_forward_to_line_end (GtkTextIter *iter);
  205. void gtk_text_iter_set_visible_line_offset (GtkTextIter *iter,
  206. gint char_on_line);
  207. void gtk_text_iter_set_visible_line_index (GtkTextIter *iter,
  208. gint byte_on_line);
  209. /* returns TRUE if a toggle was found; NULL for the tag pointer
  210. * means "any tag toggle", otherwise the next toggle of the
  211. * specified tag is located.
  212. */
  213. gboolean gtk_text_iter_forward_to_tag_toggle (GtkTextIter *iter,
  214. GtkTextTag *tag);
  215. gboolean gtk_text_iter_backward_to_tag_toggle (GtkTextIter *iter,
  216. GtkTextTag *tag);
  217. typedef gboolean (* GtkTextCharPredicate) (gunichar ch, gpointer user_data);
  218. gboolean gtk_text_iter_forward_find_char (GtkTextIter *iter,
  219. GtkTextCharPredicate pred,
  220. gpointer user_data,
  221. const GtkTextIter *limit);
  222. gboolean gtk_text_iter_backward_find_char (GtkTextIter *iter,
  223. GtkTextCharPredicate pred,
  224. gpointer user_data,
  225. const GtkTextIter *limit);
  226. gboolean gtk_text_iter_forward_search (const GtkTextIter *iter,
  227. const gchar *str,
  228. GtkTextSearchFlags flags,
  229. GtkTextIter *match_start,
  230. GtkTextIter *match_end,
  231. const GtkTextIter *limit);
  232. gboolean gtk_text_iter_backward_search (const GtkTextIter *iter,
  233. const gchar *str,
  234. GtkTextSearchFlags flags,
  235. GtkTextIter *match_start,
  236. GtkTextIter *match_end,
  237. const GtkTextIter *limit);
  238. /*
  239. * Comparisons
  240. */
  241. gboolean gtk_text_iter_equal (const GtkTextIter *lhs,
  242. const GtkTextIter *rhs);
  243. gint gtk_text_iter_compare (const GtkTextIter *lhs,
  244. const GtkTextIter *rhs);
  245. gboolean gtk_text_iter_in_range (const GtkTextIter *iter,
  246. const GtkTextIter *start,
  247. const GtkTextIter *end);
  248. /* Put these two in ascending order */
  249. void gtk_text_iter_order (GtkTextIter *first,
  250. GtkTextIter *second);
  251. G_END_DECLS
  252. #endif