Typo.
[cl-gtk2.git] / gtk / gtk.text.lisp
1 (in-package :gtk)
2
3 ;; text iter
4
5
6 (define-foreign-type unichar ()
7   ()
8   (:actual-type :uint32)
9   (:simple-parser unichar))
10
11 (defmethod translate-from-foreign (value (type unichar))
12   (code-char value))
13
14 (defmethod translate-to-foreign (value (type unichar))
15   (char-code value))
16
17 (at-init () (foreign-funcall "gtk_text_iter_get_type" :int))
18
19 (define-g-boxed-opaque text-iter "GtkTextIter"
20   :alloc (gtk-text-iter-alloc))
21
22 (define-boxed-opaque-accessor text-iter text-iter-buffer :reader "gtk_text_iter_get_buffer" :type (g-object text-buffer))
23 (define-boxed-opaque-accessor text-iter text-iter-offset :reader "gtk_text_iter_get_offset" :writer "gtk_text_iter_set_offset" :type :int)
24 (define-boxed-opaque-accessor text-iter text-iter-line :reader "gtk_text_iter_get_line" :writer "gtk_text_iter_set_line" :type :int)
25 (define-boxed-opaque-accessor text-iter text-iter-line-offset :reader "gtk_text_iter_get_line_offset" :writer "gtk_text_iter_set_line_offset" :type :int)
26 (define-boxed-opaque-accessor text-iter text-iter-visible-line-offset :reader "gtk_text_iter_get_visible_line_offset" :writer "gtk_text_iter_set_visible_line_offset" :type :int)
27 (define-boxed-opaque-accessor text-iter text-iter-char :reader "gtk_text_iter_get_char" :type unichar)
28 (define-boxed-opaque-accessor text-iter text-iter-pixbuf :reader "gtk_text_iter_get_pixbuf" :type (g-object pixbuf))
29 (define-boxed-opaque-accessor text-iter text-iter-marks :reader "gtk_text_iter_get_marks" :type (gslist (g-object text-mark) :free-from-foreign t))
30 (define-boxed-opaque-accessor text-iter text-iter-child-anchor :reader "gtk_text_iter_get_child_anchor" :type (g-object text-child-anchor))
31 (define-boxed-opaque-accessor text-iter text-iter-tags :reader "gtk_text_iter_get_tags" :type (gslist (g-object text-tag) :free-from-foreign t))
32 (define-boxed-opaque-accessor text-iter text-iter-chars-in-line :reader "gtk_text_iter_get_chars_in_line" :type :int)
33 (define-boxed-opaque-accessor text-iter text-iter-language :reader "gtk_text_iter_get_language" :type :pointer)
34 (define-boxed-opaque-accessor text-iter text-iter-is-end :reader "gtk_text_iter_is_end" :type :boolean)
35 (define-boxed-opaque-accessor text-iter text-iter-is-start :reader "gtk_text_iter_is_start" :type :boolean)
36 (define-boxed-opaque-accessor text-iter text-iter-starts-word :reader "gtk_text_iter_starts_word" :type :boolean)
37 (define-boxed-opaque-accessor text-iter text-iter-ends-word :reader "gtk_text_iter_ends_word" :type :boolean)
38 (define-boxed-opaque-accessor text-iter text-iter-inside-word :reader "gtk_text_iter_inside_word" :type :boolean)
39 (define-boxed-opaque-accessor text-iter text-iter-starts-line :reader "gtk_text_iter_starts_line" :type :boolean)
40 (define-boxed-opaque-accessor text-iter text-iter-ends-line :reader "gtk_text_iter_ends_line" :type :boolean)
41 (define-boxed-opaque-accessor text-iter text-iter-starts-sentence :reader "gtk_text_iter_starts_sentence" :type :boolean)
42 (define-boxed-opaque-accessor text-iter text-iter-ends-sentence :reader "gtk_text_iter_ends_sentence" :type :boolean)
43 (define-boxed-opaque-accessor text-iter text-iter-inside-sentence :reader "gtk_text_iter_inside_sentence" :type :boolean)
44 (define-boxed-opaque-accessor text-iter text-iter-is-cursor-position :reader "gtk_text_iter_is_cursor_position" :type :boolean)
45
46 (export (boxed-related-symbols 'text-iter))
47 (export '(text-iter-buffer text-iter-offset text-iter-line
48           text-iter-line-offset text-iter-visible-line-offset
49           text-iter-char text-iter-pixbuf text-iter-marks
50           text-iter-child-anchor text-iter-tags
51           text-iter-chars-in-line text-iter-language text-iter-is-end
52           text-iter-is-start text-iter-can-insert
53           text-iter-starts-word text-iter-ends-word
54           text-iter-inside-word text-iter-starts-line
55           text-iter-ends-line text-iter-starts-sentence
56           text-iter-ends-sentence text-iter-inside-sentence
57           text-iter-is-cursor-position ))
58
59 (defcstruct %text-iter
60   (dummy1 :pointer)
61   (dummy2 :pointer)
62   (dummy3 :int)
63   (dummy4 :int)
64   (dummy5 :int)
65   (dummy6 :int)
66   (dummy7 :int)
67   (dummy8 :int)
68   (dummy9 :pointer)
69   (dummy10 :pointer)
70   (dummy11 :int)
71   (dummy12 :int)
72   (dummy13 :int)
73   (dummy14 :pointer))
74 (defctype %text-iter (:struct %text-iter))
75
76 (defcfun gtk-text-iter-copy :pointer
77   (iter :pointer))
78
79 (defun gtk-text-iter-alloc ()
80   (with-foreign-object (iter '%text-iter)
81     (gtk-text-iter-copy iter)))
82
83 (defcfun (text-iter-slice "gtk_text_iter_get_slice") (g-string :free-from-foreign t)
84   (start (g-boxed-foreign text-iter))
85   (end (g-boxed-foreign text-iter)))
86
87 (export 'text-iter-slice)
88
89 (defcfun (text-iter-text "gtk_text_iter_get_text") (g-string :free-from-foreign t)
90   (start (g-boxed-foreign text-iter))
91   (end (g-boxed-foreign text-iter)))
92
93 (export 'text-iter-text)
94
95 (defcfun (text-iter-visible-slice "gtk_text_iter_get_visible_slice") (g-string :free-from-foreign t)
96   (start (g-boxed-foreign text-iter))
97   (end (g-boxed-foreign text-iter)))
98
99 (export 'text-iter-visible-slice)
100
101 (defcfun (text-iter-visible-text "gtk_text_iter_get_visible_text") (g-string :free-from-foreign t)
102   (start (g-boxed-foreign text-iter))
103   (end (g-boxed-foreign text-iter)))
104
105 (export 'text-iter-visible-text)
106
107 (defcfun (text-iter-toggled-tags "gtk_text_iter_get_toggled_tags") (gslist (g-object text-tag))
108   (iter (g-boxed-foreign text-iter))
109   (toggled-on :boolean))
110
111 (export 'text-iter-toggled-tags)
112
113 (defcfun (text-iter-begins-tag "gtk_text_iter_begins_tag") :boolean
114   (iter (g-boxed-foreign text-iter))
115   (tag (g-object text-tag)))
116
117 (export 'text-iter-begins-tag)
118
119 (defcfun (text-iter-ends-tag "gtk_text_iter_ends_tag") :boolean
120   (iter (g-boxed-foreign text-iter))
121   (tag (g-object text-tag)))
122
123 (export 'text-iter-ends-tag)
124
125 (defcfun (text-iter-toggles-tag "gtk_text_iter_toggles_tag") :boolean
126   (iter (g-boxed-foreign text-iter))
127   (tag (g-object text-tag)))
128
129 (export 'text-iter-toggles-tag)
130
131 (defcfun (text-iter-has-tag "gtk_text_iter_has_tag") :boolean
132   (iter (g-boxed-foreign text-iter))
133   (tag (g-object text-tag)))
134
135 (export 'text-iter-has-tag)
136
137 (defcfun (text-iter-editable "gtk_text_iter_editable") :boolean
138   (iter (g-boxed-foreign text-iter))
139   (default :boolean))
140
141 (export 'text-iter-editable)
142
143 (defcfun (text-iter-can-insert "gtk_text_iter_can_insert") :boolean
144   (iter (g-boxed-foreign text-iter))
145   (default-editable :boolean))
146
147 (export 'text-iter-can-insert)
148
149 (defcfun gtk-text-iter-get-attributes :boolean
150   (iter (g-boxed-foreign text-iter))
151   (values (g-object text-attributes)))
152
153 (defun text-iter-attributes (iter default-attributes)
154   (let ((changed-p (gtk-text-iter-get-attributes iter default-attributes)))
155     (values default-attributes changed-p)))
156
157 (export 'text-iter-attributes)
158
159 (defcfun gtk-text-iter-forward-chars :boolean
160   (iter (g-boxed-foreign text-iter))
161   (count :int))
162
163 (defcfun gtk-text-iter-forward-lines :boolean
164   (iter (g-boxed-foreign text-iter))
165   (count :int))
166
167 (defcfun gtk-text-iter-forward-word-ends :boolean
168   (iter (g-boxed-foreign text-iter))
169   (count :int))
170
171 (defcfun gtk-text-iter-backward-word-starts :boolean
172   (iter (g-boxed-foreign text-iter))
173   (count :int))
174
175 (defcfun gtk-text-iter-forward-cursor-positions :boolean
176   (iter (g-boxed-foreign text-iter))
177   (count :int))
178
179 (defcfun gtk-text-iter-forward-sentence-ends :boolean
180   (iter (g-boxed-foreign text-iter))
181   (count :int))
182
183 (defcfun gtk-text-iter-backward-sentence-starts :boolean
184   (iter (g-boxed-foreign text-iter))
185   (count :int))
186
187 (defcfun gtk-text-iter-forward-visible-word-ends :boolean
188   (iter (g-boxed-foreign text-iter))
189   (count :int))
190
191 (defcfun gtk-text-iter-backward-visible-word-starts :boolean
192   (iter (g-boxed-foreign text-iter))
193   (count :int))
194
195 (defcfun gtk-text-iter-forward-visible-cursor-positions :boolean
196   (iter (g-boxed-foreign text-iter))
197   (count :int))
198
199 (defcfun gtk-text-iter-forward-visible-lines :boolean
200   (iter (g-boxed-foreign text-iter))
201   (count :int))
202
203 (defun text-iter-move (iter &key (count 1) (by :char) (direction :forward))
204   (assert (typep by '(member :char :line :word :cursor-position :sentence :visible-word :visible-line :visible-cursor-position)))
205   (assert (typep direction '(member :forward :backward)))
206   (when (and (member by '(:char :ine :cursor-position :visible-line :visible-cursor-position)) (eq direction :backward))
207     (setf count (- count)))
208   (ecase by
209     (:char (gtk-text-iter-forward-chars iter count))
210     (:line (gtk-text-iter-forward-lines iter count))
211     (:word (if (eq direction :forward)
212                (gtk-text-iter-forward-word-ends iter count)
213                (gtk-text-iter-backward-word-starts iter count)))
214     (:cursor-position (gtk-text-iter-forward-cursor-positions iter count))
215     (:sentence (if (eq direction :forward)
216                    (gtk-text-iter-forward-sentence-ends iter count)
217                    (gtk-text-iter-backward-sentence-starts iter count)))
218     (:visible-word (if (eq direction :forward)
219                        (gtk-text-iter-forward-visible-word-ends iter count)
220                        (gtk-text-iter-backward-visible-word-starts iter count)))
221     (:visible-line (gtk-text-iter-forward-visible-lines iter count))
222     (:visible-cursor-position (gtk-text-iter-forward-visible-cursor-positions iter count))))
223
224 (export 'text-iter-move)
225
226 (defcfun (text-iter-forward-to-end "gtk_text_iter_forward_to_end") :void
227   (iter (g-boxed-foreign text-iter)))
228
229 (export 'text-iter-forward-to-end)
230
231 (defcfun (text-iter-forward-to-line-end "gtk_text_iter_forward_to_line_end") :boolean
232   (iter (g-boxed-foreign text-iter)))
233
234 (export 'text-iter-forward-to-line-end)
235
236 (defcfun (text-iter-forward-to-tag-toggle "gtk_text_iter_forward_to_tag_toggle") :boolean
237   (iter (g-boxed-foreign text-iter))
238   (tag (g-object text-tag)))
239
240 (defcfun (text-iter-backward-to-tag-toggle "gtk_text_iter_backward_to_tag_toggle") :boolean
241   (iter (g-boxed-foreign text-iter))
242   (tag (g-object text-tag)))
243
244 (export '(text-iter-forward-to-tag-toggle text-iter-backward-to-tag-toggle))
245
246 (defcallback gtk-text-char-predicate :boolean ((char unichar) (user-data :pointer))
247   (let ((function (get-stable-pointer-value user-data)))
248     (funcall function char)))
249
250 (defcfun gtk-text-iter-forward-find-char :boolean
251   (iter (g-boxed-foreign text-iter))
252   (pred :pointer)
253   (user-data :pointer)
254   (limit (g-boxed-foreign text-iter)))
255
256 (defcfun gtk-text-iter-backward-find-char :boolean
257   (iter (g-boxed-foreign text-iter))
258   (pred :pointer)
259   (user-data :pointer)
260   (limit (g-boxed-foreign text-iter)))
261
262 (defun text-iter-find-char (iter predicate &key limit (direction :forward))
263   (assert (typep direction '(member :forward :backward)))
264   (with-stable-pointer (ptr predicate)
265     (if (eq direction :forward)
266         (gtk-text-iter-forward-find-char iter (callback gtk-text-char-predicate) ptr limit)
267         (gtk-text-iter-backward-find-char iter (callback gtk-text-char-predicate) ptr limit))))
268
269 (export 'text-iter-find-char)
270
271 (defcfun gtk-text-iter-forward-search :boolean
272   (iter (g-boxed-foreign text-iter))
273   (str (:string :free-to-foreign t))
274   (flags text-search-flags)
275   (match-start (g-boxed-foreign text-iter))
276   (match-end (g-boxed-foreign text-iter))
277   (limit (g-boxed-foreign text-iter)))
278
279 (defcfun gtk-text-iter-backward-search :boolean
280   (iter (g-boxed-foreign text-iter))
281   (str (:string :free-to-foreign t))
282   (flags text-search-flags)
283   (match-start (g-boxed-foreign text-iter))
284   (match-end (g-boxed-foreign text-iter))
285   (limit (g-boxed-foreign text-iter)))
286
287 (defun text-iter-search (start-position string &key flags limit (direction :forward))
288   (assert (typep direction '(member :forward :backward)))
289   (let ((i1 (make-instance 'text-iter))
290         (i2 (make-instance 'text-iter)))
291     (if (if (eq direction :forward)
292             (gtk-text-iter-forward-search start-position string flags i1 i2 limit)
293             (gtk-text-iter-backward-search start-position string flags i1 i2 limit))
294         (values t i1 i2)
295         (values nil nil nil))))
296
297 (export 'text-iter-search)
298
299 (defcfun (text-iter-equal "gtk_text_iter_equal") :boolean
300   (iter-1 (g-boxed-foreign text-iter))
301   (iter-2 (g-boxed-foreign text-iter)))
302
303 (export 'text-iter-equal)
304
305 (defcfun (text-iter-compare "gtk_text_iter_compare") :int
306   (iter-1 (g-boxed-foreign text-iter))
307   (iter-2 (g-boxed-foreign text-iter)))
308
309 (export 'text-iter-compare)
310
311 (defcfun (text-iter-in-range "gtk_text_iter_in_range") :boolean
312   (iter (g-boxed-foreign text-iter))
313   (start (g-boxed-foreign text-iter))
314   (end (g-boxed-foreign text-iter)))
315
316 (export 'text-iter-in-range)
317
318 (defcfun (text-iter-order "gtk_text_iter_order") :void
319   (iter-1 (g-boxed-foreign text-iter))
320   (iter-2 (g-boxed-foreign text-iter)))
321
322 (export 'text-iter-order)
323
324 ;; text buffer
325
326 (defcfun (text-buffer-line-count "gtk_text_buffer_get_line_count") :int
327   (buffer (g-object text-buffer)))
328
329 (export 'text-buffer-line-count)
330
331 (defcfun (text-buffer-char-count "gtk_text_buffer_get_char_count") :int
332   (buffer (g-object text-buffer)))
333
334 (export 'text-buffer)
335
336 (defcfun gtk-text-buffer-insert :void
337   (buffer (g-object text-buffer))
338   (iter (g-boxed-foreign text-iter))
339   (text (:string :free-to-foreign t))
340   (len :int))
341
342 (defcfun gtk-text-buffer-insert-at-cursor :void
343   (buffer (g-object text-buffer))
344   (text (:string :free-to-foreign t))
345   (len :int))
346
347 (defcfun gtk-text-buffer-insert-interactive :boolean
348   (buffer (g-object text-buffer))
349   (iter (g-boxed-foreign text-iter))
350   (text (:string :free-to-foreign t))
351   (len :int)
352   (default-editable :boolean))
353
354 (defcfun gtk-text-buffer-insert-interactive-at-cursor :boolean
355   (buffer (g-object text-buffer))
356   (text (:string :free-to-foreign t))
357   (len :int)
358   (default-editable :boolean))
359
360 (defun text-buffer-insert (buffer text &key (position :cursor) (interactive nil) (default-editable t))
361   (assert (typep position '(or text-iter (member :cursor))))
362   (if interactive
363       (if (eq position :cursor)
364           (gtk-text-buffer-insert-interactive-at-cursor buffer text -1 default-editable)
365           (gtk-text-buffer-insert-interactive buffer position text -1 default-editable))
366       (progn (if (eq position :cursor)
367                  (gtk-text-buffer-insert-at-cursor buffer text -1)
368                  (gtk-text-buffer-insert buffer position text -1))
369              t)))
370
371 (export 'text-buffer-insert)
372
373 (defcfun gtk-text-buffer-insert-range :void
374   (buffer (g-object text-buffer))
375   (iter (g-boxed-foreign text-iter))
376   (range-start (g-boxed-foreign text-iter))
377   (range-end (g-boxed-foreign text-iter)))
378
379 (defcfun gtk-text-buffer-insert-range-interactive :boolean
380   (buffer (g-object text-buffer))
381   (iter (g-boxed-foreign text-iter))
382   (range-start (g-boxed-foreign text-iter))
383   (range-end (g-boxed-foreign text-iter))
384   (default-editable :boolean))
385
386 (defun text-buffer-insert-range (buffer position range-start range-end &key interactive default-editable)
387   (if interactive
388       (gtk-text-buffer-insert-range-interactive buffer position range-start range-end default-editable)
389       (progn (gtk-text-buffer-insert-range buffer position range-start range-end)
390              t)))
391
392 (export 'text-buffer-insert-range)
393
394 (defcfun gtk-text-buffer-delete :void
395   (buffer (g-object text-buffer))
396   (range-start (g-boxed-foreign text-iter))
397   (range-end (g-boxed-foreign text-iter)))
398
399 (defcfun gtk-text-buffer-delete-interactive :boolean
400   (buffer (g-object text-buffer))
401   (range-start (g-boxed-foreign text-iter))
402   (range-end (g-boxed-foreign text-iter))
403   (default-editable :boolean))
404
405 (defun text-buffer-delete (buffer range-start range-end &key interactive default-editable)
406   (if interactive
407       (gtk-text-buffer-delete-interactive buffer range-start range-end default-editable)
408       (progn (gtk-text-buffer-delete buffer range-start range-end)
409              t)))
410
411 (export 'text-buffer-delete)
412
413 (defcfun gtk-text-buffer-backspace :boolean
414   (buffer (g-object text-buffer))
415   (iter (g-boxed-foreign text-iter))
416   (interactive :boolean)
417   (default-editable :boolean))
418
419 (defun text-buffer-backspace (buffer position &key interactive default-editable)
420   (gtk-text-buffer-backspace buffer position interactive default-editable))
421
422 (export 'text-buffer-backspace)
423
424 (defcfun gtk-text-buffer-get-slice (:string :free-from-foreign t)
425   (buffer (g-object text-buffer))
426   (range-start (g-boxed-foreign text-iter))
427   (range-end (g-boxed-foreign text-iter))
428   (include-hidden-chars :boolean))
429
430 (defun text-buffer-slice (buffer range-start range-end &key include-hidden-chars)
431   (gtk-text-buffer-get-slice buffer range-start range-end include-hidden-chars))
432
433 (export 'text-buffer-slice)
434
435 (defcfun (text-buffer-insert-pixbuf "gtk_text_buffer_insert_pixbuf") :void
436   (buffer (g-object text-buffer))
437   (position (g-boxed-foreign text-iter))
438   (pixbuf (g-object pixbuf)))
439
440 (export 'text-buffer-insert-pixbuf)
441
442 (defcfun gtk-text-buffer-insert-child-anchor :void
443   (buffer (g-object text-buffer))
444   (iter (g-boxed-foreign text-iter))
445   (anchor (g-object text-child-anchor)))
446
447 (defcfun gtk-text-buffer-create-child-anchor (g-object text-child-anchor)
448   (buffer (g-object text-buffer))
449   (iter (g-boxed-foreign text-iter)))
450
451 (defun text-buffer-insert-child-anchor (buffer position &optional anchor)
452   (if anchor
453       (progn (gtk-text-buffer-insert-child-anchor buffer position anchor)
454              anchor)
455       (gtk-text-buffer-create-child-anchor buffer position)))
456
457 (export 'text-buffer-insert-child-anchor)
458
459 (defcfun gtk-text-buffer-create-mark (g-object text-mark)
460   (buffer (g-object text-buffer))
461   (name (:string :free-to-foreign t))
462   (position (g-boxed-foreign text-iter))
463   (left-gravity :boolean))
464
465 (defun text-buffer-create-mark (buffer name position &optional (left-gravity t))
466   (gtk-text-buffer-create-mark buffer name position left-gravity))
467
468 (export 'text-buffer-create-mark)
469
470 (defcfun gtk-text-buffer-move-mark :void
471   (buffer (g-object text-buffer))
472   (mark (g-object text-mark))
473   (position (g-boxed-foreign text-iter)))
474
475 (defcfun gtk-text-buffer-move-mark-by-name :void
476   (buffer (g-object text-buffer))
477   (name (:string :free-to-foreign t))
478   (position (g-boxed-foreign text-iter)))
479
480 (defun text-buffer-move-mark (buffer mark position)
481   (etypecase mark
482     (string (gtk-text-buffer-move-mark-by-name buffer mark position))
483     (text-mark (gtk-text-buffer-move-mark buffer mark position))))
484
485 (export 'text-buffer-move-mark)
486
487 (defcfun (text-buffer-add-mark "gtk_text_buffer_add_mark") :void
488   (buffer (g-object text-buffer))
489   (mark (g-object text-mark))
490   (position (g-boxed-foreign text-iter)))
491
492 (export 'text-buffer-add-mark)
493
494 (defcfun gtk-text-buffer-delete-mark :void
495   (buffer (g-object text-buffer))
496   (mark (g-object text-mark)))
497
498 (defcfun gtk-text-buffer-delete-mark-by-name :void
499   (buffer (g-object text-buffer))
500   (name (:string :free-to-foreign t)))
501
502 (defun text-buffer-delete-mark (buffer mark)
503   (etypecase mark
504     (string (gtk-text-buffer-delete-mark-by-name buffer mark))
505     (text-mark (gtk-text-buffer-delete-mark buffer mark))))
506
507 (export 'text-buffer-delete-mark)
508
509 (defcfun (text-buffer-get-mark "gtk_text_buffer_get_mark") (g-object text-mark)
510   (buffer (g-object text-buffer))
511   (name (:string :free-to-foreign t)))
512
513 (export 'text-buffer-get-mark)
514
515 (defcfun (text-buffer-insertion-mark "gtk_text_buffer_get_insert") (g-object text-mark)
516   (buffer (g-object text-buffer)))
517
518 (export 'text-buffer-insertion-mark)
519
520 (defcfun (text-buffer-selection-bound "gtk_text_buffer_get_selection_bound") (g-object text-mark)
521   (buffer (g-object text-buffer)))
522
523 (export 'text-buffer-selection-bound)
524
525 (defcfun (text-buffer-place-cursor "gtk_text_buffer_place_cursor") :void
526   (buffer (g-object text-buffer))
527   (position (g-boxed-foreign text-iter)))
528
529 (export 'text-buffer-place-cursor)
530
531 (defcfun (text-buffer-select-range "gtk_text_buffer_select_range") :void
532   (buffer (g-object text-buffer))
533   (insertion-point (g-boxed-foreign text-iter))
534   (selection-bound (g-boxed-foreign text-iter)))
535
536 (export 'text-buffer-select-range)
537
538 (defcfun gtk-text-buffer-apply-tag :void
539   (buffer (g-object text-buffer))
540   (tag (g-object text-tag))
541   (start (g-boxed-foreign text-iter))
542   (end (g-boxed-foreign text-iter)))
543
544 (defcfun gtk-text-buffer-apply-tag-by-name :void
545   (buffer (g-object text-buffer))
546   (name (:string :free-to-foreign t))
547   (start (g-boxed-foreign text-iter))
548   (end (g-boxed-foreign text-iter)))
549
550 (defun text-buffer-apply-tag (buffer tag start end)
551   (etypecase tag
552     (string (gtk-text-buffer-apply-tag-by-name buffer tag start end))
553     (text-tag (gtk-text-buffer-apply-tag buffer tag start end))))
554
555 (export 'text-buffer-apply-tag)
556
557 (defcfun gtk-text-buffer-remove-tag :void
558   (buffer (g-object text-buffer))
559   (tag (g-object text-tag))
560   (start (g-boxed-foreign text-iter))
561   (end (g-boxed-foreign text-iter)))
562
563 (defcfun gtk-text-buffer-remove-tag-by-name :void
564   (buffer (g-object text-buffer))
565   (name (:string :free-to-foreign t))
566   (start (g-boxed-foreign text-iter))
567   (end (g-boxed-foreign text-iter)))
568
569 (defun text-buffer-remove-tag (buffer tag start end)
570   (etypecase tag
571     (string (gtk-text-buffer-remove-tag-by-name buffer tag start end))
572     (text-tag (gtk-text-buffer-remove-tag buffer tag start end))))
573
574 (export 'text-buffer-remove-tag)
575
576 (defcfun (text-buffer-remove-all-tags "gtk_text_buffer_remove_all_tags") :void
577   (buffer (g-object text-buffer))
578   (start (g-boxed-foreign text-iter))
579   (end (g-boxed-foreign text-iter)))
580
581 (defcfun gtk-text-buffer-get-iter-at-line-offset :void
582   (buffer (g-object text-buffer))
583   (iter (g-boxed-foreign text-iter))
584   (line-number :int)
585   (char-offset :int))
586
587 (defun text-buffer-get-iter-at-line-offset (buffer line-number char-offset)
588   (let ((iter (make-instance 'text-iter)))
589     (gtk-text-buffer-get-iter-at-line-offset buffer iter line-number char-offset)
590     iter))
591
592 (export 'text-buffer-get-iter-at-line-offset)
593
594 (defcfun gtk-text-buffer-get-iter-at-offset :void
595   (buffer (g-object text-buffer))
596   (iter (g-boxed-foreign text-iter))
597   (char-offset :int))
598
599 (defun text-buffer-get-iter-at-offset (buffer offset)
600   (let ((iter (make-instance 'text-iter)))
601     (gtk-text-buffer-get-iter-at-offset buffer iter offset)
602     iter))
603
604 (export 'text-buffer-get-iter-at-offset)
605
606 (defcfun gtk-text-buffer-get-iter-at-line :void
607   (buffer (g-object text-buffer))
608   (iter (g-boxed-foreign text-iter))
609   (line-number :int))
610
611 (defun text-buffer-get-iter-at-line (buffer line-number)
612   (let ((iter (make-instance 'text-iter)))
613     (gtk-text-buffer-get-iter-at-line buffer iter line-number)
614     iter))
615
616 (export 'text-buffet-get-iter-at-line)
617
618 (defcfun gtk-text-buffer-get-iter-at-mark :void
619   (buffer (g-object text-buffer))
620   (iter (g-boxed-foreign text-iter))
621   (mark (g-object text-mark)))
622
623 (defun text-buffer-get-iter-at-mark (buffer mark)
624   (when (stringp mark)
625     (setf mark (text-buffer-get-mark buffer mark)))
626   (let ((iter (make-instance 'text-iter)))
627     (gtk-text-buffer-get-iter-at-mark buffer iter mark)
628     iter))
629
630 (export 'text-buffer-get-iter-at-mark)
631
632 (defcfun gtk-text-buffer-get-iter-at-child-anchor :void
633   (buffer (g-object text-buffer))
634   (iter (g-boxed-foreign text-iter))
635   (anchor (g-object text-child-anchor)))
636
637 (defun text-buffer-get-iter-at-child-anchor (buffer anchor)
638   (let ((iter (make-instance 'text-iter)))
639     (gtk-text-buffer-get-iter-at-child-anchor buffer iter anchor)
640     iter))
641
642 (export 'text-buffer-get-iter-at-child-anchor)
643
644 (defcfun gtk-text-buffer-get-start-iter :void
645   (buffer (g-object text-buffer))
646   (iter (g-boxed-foreign text-iter)))
647
648 (defun text-buffer-get-start-iter (buffer)
649   (let ((iter (make-instance 'text-iter)))
650     (gtk-text-buffer-get-start-iter buffer iter)
651     iter))
652
653 (export 'text-buffer-get-start-iter)
654
655 (defcfun gtk-text-buffer-get-end-iter :void
656   (buffer (g-object text-buffer))
657   (iter (g-boxed-foreign text-iter)))
658
659 (defun text-buffer-get-end-iter (buffer)
660   (let ((iter (make-instance 'text-iter)))
661     (gtk-text-buffer-get-end-iter buffer iter)
662     iter))
663
664 (export 'text-buffer-get-end-iter)
665
666 (defcfun gtk-text-buffer-get-bounds :void
667   (buffer (g-object text-buffer))
668   (start (g-boxed-foreign text-iter))
669   (end (g-boxed-foreign text-iter)))
670
671 (defun text-buffer-get-bounds (buffer)
672   (let ((start (make-instance 'text-iter))
673         (end (make-instance 'text-iter)))
674     (gtk-text-buffer-get-bounds buffer start end)
675     (values start end)))
676
677 (export 'text-buffer-get-bounds)
678
679 (defcfun gtk-text-buffer-delete-selection :boolean
680   (bufer (g-object text-buffer))
681   (interactive :boolean)
682   (default-editable :boolean))
683
684 (defun text-buffer-delete-selection (buffer &key interactive default-editable)
685   (gtk-text-buffer-delete-selection buffer interactive default-editable))
686
687 (export 'text-buffer-delete-selection)
688
689 (defcfun gtk-text-buffer-paste-clipboard :void
690   (buffer (g-object text-buffer))
691   (clipboard (g-object clipboard))
692   (override-location (g-boxed-foreign text-iter))
693   (default-editable :boolean))
694
695 (defun text-buffer-paste-clipboard (buffer clipboard &key position default-editable)
696   (gtk-text-buffer-paste-clipboard buffer clipboard position default-editable))
697
698 (export 'text-buffer-paste-clipboard)
699
700 (defcfun (text-buffer-copy-clipboard "gtk_text_buffer_copy_clipboard") :void
701   (buffer (g-object text-buffer))
702   (clipboard (g-object clipboard)))
703
704 (export 'text-buffer-copy-clipboard)
705
706 (defcfun (text-buffer-cut-clipboard "gtk_text_buffer_cut_clipboard") :void
707   (buffer (g-object text-buffer))
708   (clipboard (g-object clipboard))
709   (default-editable :boolean))
710
711 (export 'text-buffer-cut-clipboard)
712
713 (defcfun gtk-text-buffer-get-selection-bounds :boolean
714   (buffer (g-object text-buffer))
715   (start (g-boxed-foreign text-iter))
716   (end (g-boxed-foreign text-iter)))
717
718 (defun text-buffer-get-selection-bounds (buffer)
719   (let ((i1 (make-instance 'text-iter))
720         (i2 (make-instance 'text-iter)))
721     (if (gtk-text-buffer-get-selection-bounds buffer i1 i2)
722         (values i1 i2)
723         (values nil nil))))
724
725 (export 'text-buffer-get-selection-bounds)
726
727 (defcfun (text-buffer-begin-user-action "gtk_text_buffer_begin_user_action") :void
728   (buffer (g-object text-buffer)))
729
730 (export 'text-buffer-begin-user-action)
731
732 (defcfun (text-buffer-end-user-action "gtk_text_buffer_end_user_action") :void
733   (buffer (g-object text-buffer)))
734
735 (export 'text-buffer-end-user-action)
736
737 (defmacro with-text-buffer-user-action ((buffer) &body body)
738   (let ((g (gensym)))
739     `(let ((,g ,buffer))
740        (text-buffer-begin-user-action ,g)
741        (unwind-protect
742             (progn ,@body)
743          (text-buffer-end-user-action ,g)))))
744
745 (export 'with-text-buffer-user-action)
746
747 (defcfun (text-buffer-add-selection-clipboard "gtk_text_buffer_add_selection_clipboard") :void
748   (buffer (g-object text-buffer))
749   (clipboard (g-object clipboard)))
750
751 (defcfun (text-buffer-remove-selection-clipboard "gtk_text_buffer_remove_selection_clipboard") :void
752   (buffer (g-object text-buffer))
753   (clipboard (g-object clipboard)))
754
755 (export 'text-buffer-remove-selection-clipboard)
756
757 (defcfun gtk-text-buffer-deserialize :boolean
758   (register-buffer (g-object text-buffer))
759   (content-buffer (g-object text-buffer))
760   (format gdk-atom-as-string)
761   (iter (g-boxed-foreign text-iter))
762   (data :pointer)
763   (length gsize)
764   (error :pointer))
765
766 (defun text-buffer-deserialize (register-buffer content-buffer format iter data)
767   (let ((bytes (foreign-alloc :uint8 :count (length data))))
768     (iter (for i from 0 below (length data))
769           (setf (mem-aref bytes :uint8 i) (aref data i)))
770     (unwind-protect
771          (with-g-error (err)
772            (gtk-text-buffer-deserialize register-buffer content-buffer
773                                         format iter bytes (length data) err))
774       (foreign-free bytes))))
775
776 (export 'text-buffer-deserialize)
777
778 (defcfun (text-buffer-deserialize-can-create-tags "gtk_text_buffer_deserialize_get_can_create_tags") :boolean
779   (buffer (g-object text-buffer))
780   (format gdk-atom-as-string))
781
782 (defcfun gtk-text-buffer-deserialize-set-can-create-tags :void
783   (buffer (g-object text-buffer))
784   (format gdk-atom-as-string)
785   (can-create-tags :boolean))
786
787 (defun (setf text-buffer-deserialize-can-create-tags) (new-value buffer format)
788   (gtk-text-buffer-deserialize-set-can-create-tags buffer format new-value))
789
790 (export 'text-buffer-deserialize-can-create-tags)
791
792 (defcfun gtk-text-buffer-get-deserialize-formats (:pointer gdk-atom-as-string)
793   (text-buffer (g-object text-buffer))
794   (n-formats (:pointer :int)))
795
796 (defun text-buffer-get-deserialize-formats (text-buffer)
797   (with-foreign-object (n-formats :int)
798     (let ((atoms-ptr (gtk-text-buffer-get-deserialize-formats text-buffer n-formats)))
799       (iter (for i from 0 below (mem-ref n-formats :int))
800             (for atom = (mem-aref atoms-ptr 'gdk-atom-as-string i))
801             (collect atom)))))
802
803 (export 'text-buffer-get-deserialize-formats)
804
805 (defcfun gtk-text-buffer-get-serialize-formats (:pointer gdk-atom-as-string)
806   (text-buffer (g-object text-buffer))
807   (n-formats (:pointer :int)))
808
809 (defun text-buffer-get-serialize-formats (text-buffer)
810   (with-foreign-object (n-formats :int)
811     (let ((atoms-ptr (gtk-text-buffer-get-serialize-formats text-buffer n-formats)))
812       (iter (for i from 0 below (mem-ref n-formats :int))
813             (for atom = (mem-aref atoms-ptr 'gdk-atom-as-string i))
814             (collect atom)))))
815
816 (export 'text-buffer-get-serialize-formats)
817
818 (defcallback gtk-text-buffer-deserialize-cb :boolean
819     ((register-buffer (g-object text-buffer))
820      (content-buffer (g-object text-buffer))
821      (iter (g-boxed-foreign text-iter))
822      (data :pointer)
823      (length gsize)
824      (create-tags :boolean)
825      (user-data :pointer)
826      (error :pointer))
827   (with-catching-to-g-error (error)
828     (let ((fn (stable-pointer-value user-data)))
829       (restart-case
830           (let ((bytes (iter (with bytes = (make-array length :element-type '(unsigned-byte 8)))
831                              (for i from 0 below length)
832                              (setf (aref bytes i) (mem-ref data :uint8 i))
833                              (finally (return bytes)))))
834             (progn (funcall fn register-buffer content-buffer iter bytes create-tags) t))
835         (return-from-text-buffer-deserialize-cb ()
836           (error 'g-error-condition
837                  :domain "cl-gtk2"
838                  :code 0
839                  :message "'return-from-text-buffer-deserialize-cb' restart was called"))))))
840
841 (defcfun gtk-text-buffer-register-deserialize-format gdk-atom-as-string
842   (buffer (g-object text-buffer))
843   (mime-type :string)
844   (function :pointer)
845   (user-data :pointer)
846   (destroy-notify :pointer))
847
848 (defun text-buffer-register-deserialize-format (buffer mime-type function)
849   (gtk-text-buffer-register-deserialize-format buffer mime-type
850                                                (callback gtk-text-buffer-deserialize-cb)
851                                                (allocate-stable-pointer function)
852                                                (callback stable-pointer-free-destroy-notify-callback)))
853
854 (export 'text-buffer-register-deserialize-format)
855
856 (defcfun (text-buffer-register-deserialize-tagset "gtk_text_buffer_register_deserialize_tagset") gdk-atom-as-string
857   (buffer (g-object text-buffer))
858   (tagset-name :string))
859
860 (export 'text-buffer-register-deserialize-tagset)
861
862 (defcallback gtk-text-buffer-serialize-cb :pointer
863     ((register-buffer (g-object text-buffer))
864      (content-buffer (g-object text-buffer))
865      (start-iter (g-boxed-foreign text-iter))
866      (end-iter (g-boxed-foreign text-iter))
867      (length (:pointer gsize))
868      (user-data :pointer))
869   (let ((fn (stable-pointer-value user-data)))
870     (restart-case
871         (let* ((bytes (funcall fn register-buffer content-buffer start-iter end-iter))
872                (bytes-ptr (g-malloc (length bytes))))
873           (setf (mem-ref length 'gsize) (length bytes))
874           (iter (for i from 0 below (length bytes))
875                 (setf (mem-aref bytes-ptr :uint8 i) (aref bytes i)))
876           bytes-ptr)
877       (return-from-text-buffer-serialize-cb () nil))))
878
879 (defcfun gtk-text-buffer-register-serialize-format gdk-atom-as-string
880   (buffer (g-object text-buffer))
881   (mime-type :string)
882   (function :pointer)
883   (user-data :pointer)
884   (destroy-notify :pointer))
885
886 (defun text-buffer-register-serialize-format (buffer mime-type function)
887   (gtk-text-buffer-register-serialize-format buffer mime-type
888                                              (callback gtk-text-buffer-serialize-cb)
889                                              (allocate-stable-pointer function)
890                                              (callback stable-pointer-free-destroy-notify-callback)))
891
892 (export 'text-buffer-register-serialize-format)
893
894 (defcfun (text-buffer-register-serialize-tagset "gtk_text_buffer_register_serialize_tagset") gdk-atom-as-string
895   (buffer (g-object text-buffer))
896   (tagset-name :string))
897
898 (export 'text-buffer-register-serialize-tagset)
899
900 (defcfun gtk-text-buffer-serialize :pointer
901   (register-buffer (g-object text-buffer))
902   (content-buffer (g-object text-buffer))
903   (format gdk-atom-as-string)
904   (start (g-boxed-foreign text-iter))
905   (end (g-boxed-foreign text-iter))
906   (length (:pointer gsize)))
907
908 (defun text-buffer-serialize (register-buffer content-buffer format start end)
909   (with-foreign-object (length 'gsize)
910     (let ((bytes (gtk-text-buffer-serialize register-buffer content-buffer format start end length)))
911       (iter (for i from 0 to (mem-ref length 'gsize))
912             (for byte = (mem-aref bytes :uint8 i))
913             (collect byte result-type vector)
914             (finally (g-free bytes))))))
915
916 (export 'text-buffer-serialize)
917
918 (defcfun (text-buffer-unregister-deserialize-format "gtk_text_buffer_unregister_deserialize_format") :void
919   (buffer (g-object text-buffer))
920   (format gdk-atom-as-string))
921
922 (export 'text-buffer-unregister-deserialize-format)
923
924 (defcfun (text-buffer-unregister-serialize-format "gtk_text_buffer_unregister_serialize_format") :void
925   (buffer (g-object text-buffer))
926   (format gdk-atom-as-string))
927
928 (export 'text-buffer-unregister-serialize-format)
929
930 ;; text tag
931
932 ;; text tag table
933
934 (defcallback gtk-text-tag-table-foreach-function :void ((tag (g-object text-tag)) (data :pointer))
935   (funcall (get-stable-pointer-value data) tag))
936
937 (defcfun (text-tag-table-add "gtk_text_tag_table_add") :void
938   (table (g-object text-tag-table))
939   (tag (g-object text-tag)))
940
941 (export 'text-tag-table-add)
942
943 (defcfun (text-tag-table-remove "gtk_text_tag_table_remove") :void
944   (table (g-object text-tag-table))
945   (tag (g-object text-tag)))
946
947 (export 'text-tag-table-remove)
948
949 (defcfun (text-tag-table-lookup "gtk_text_tag_table_lookup") (g-object text-tag)
950   (table (g-object text-tag-table))
951   (name (:string :free-to-foreign t)))
952
953 (export 'text-tag-table-lookup)
954
955 (defcfun gtk-text-tag-table-foreach :void
956   (table (g-object text-tag-table))
957   (function :pointer)
958   (data :pointer))
959
960 (defun text-tag-table-foreach (table function)
961   (with-stable-pointer (ptr function)
962     (gtk-text-tag-table-foreach table (callback gtk-text-tag-table-foreach-function) ptr)))
963
964 (export 'text-tag-table-foreach)
965
966 (defcfun (text-tag-table-size "gtk_text_tag_table_get_size") :int
967   (table (g-object text-tag-table)))
968
969 (export 'text-tag-table-size)
970
971 ;; text view
972
973 (defcfun gtk-text-view-scroll-to-mark :void
974   (text-view (g-object text-view))
975   (mark (g-object text-mark))
976   (within-margin :double)
977   (use-align :boolean)
978   (x-align :double)
979   (y-align :double))
980
981 (defun text-view-scroll-to-mark (text-view mark &key (within-margin 0.4) (x-align 0.0 x-align-supplied) (y-align 0.0 y-align-supplied))
982   (gtk-text-view-scroll-to-mark text-view mark (coerce within-margin 'double-float) (or x-align-supplied y-align-supplied) (coerce x-align 'double-float) (coerce y-align 'double-float)))
983
984 (export 'text-view-scroll-to-mark)
985
986 (defcfun gtk-text-view-scroll-to-iter :void
987   (text-view (g-object text-view))
988   (iter (g-boxed-foreign text-iter))
989   (within-margin :double)
990   (use-align :boolean)
991   (x-align :double)
992   (y-align :double))
993
994 (defun text-view-scroll-to-iter (text-view iter &key (within-margin 0.4) (x-align 0.0 x-align-supplied) (y-align 0.0 y-align-supplied))
995   (gtk-text-view-scroll-to-iter text-view iter (coerce within-margin 'double-float) (or x-align-supplied y-align-supplied) (coerce x-align 'double-float) (coerce y-align 'double-float)))
996
997 (export 'text-view-scroll-to-iter)
998
999 (defcfun (text-view-scroll-mark-onscreen "gtk_text_view_scroll_mark_onscreen") :void
1000   (text-view (g-object text-view))
1001   (mark (g-object text-mark)))
1002
1003 (export 'text-view-scroll-mark-onscreen)
1004
1005 (defcfun (text-view-move-mark-onscreen "gtk_text_view_move_mark_onscreen") :boolean
1006   (text-view (g-object text-view))
1007   (mark (g-object text-mark)))
1008
1009 (export 'text-view-move-mark-onscreen)
1010
1011 (defcfun (text-view-place-cursor-onscreen "gtk_text_view_place_cursor_onscreen") :boolean
1012   (text-view (g-object text-view)))
1013
1014 (export 'text-view-place-cursor-onscreen)
1015
1016 (defcfun gtk-text-view-get-visible-rect :void
1017   (text-view (g-object text-view))
1018   (visible-rect (g-boxed-foreign rectangle)))
1019
1020 (defun text-view-visible-rect (text-view)
1021   (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
1022     (gtk-text-view-get-visible-rect text-view rect)
1023     rect))
1024
1025 (export 'text-view-visible-rect)
1026
1027 (defcfun gtk-text-view-get-iter-location :void
1028   (text-view (g-object text-view))
1029   (iter (g-boxed-foreign text-iter))
1030   (location (g-boxed-foreign rectangle)))
1031
1032 (defun text-view-iter-location (text-view iter)
1033   (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
1034     (gtk-text-view-get-iter-location text-view iter rect)
1035     rect))
1036
1037 (export 'text-view-iter-location)
1038
1039 (defcfun gtk-text-view-get-line-at-y :void
1040   (text-view (g-object text-view))
1041   (target-iter (g-boxed-foreign text-iter))
1042   (y :int)
1043   (line-top (:pointer :int)))
1044
1045 (defun text-view-get-line-at-y (text-view y)
1046   (let ((iter (make-instance 'text-iter)))
1047     (with-foreign-object (line-top :int)
1048       (gtk-text-view-get-line-at-y text-view iter y line-top)
1049       (values iter (mem-ref line-top :int)))))
1050
1051 (export 'text-view-get-line-at-y)
1052
1053 (defcfun gtk-text-view-get-line-yrange :void
1054   (text-view (g-object text-view))
1055   (iter (g-boxed-foreign text-iter))
1056   (y (:pointer :int))
1057   (height (:pointer :int)))
1058
1059 (defun text-view-get-line-yrange (text-view iter)
1060   (with-foreign-objects ((y :int) (height :int))
1061     (gtk-text-view-get-line-yrange text-view iter y height)
1062     (values (mem-ref y :int) (mem-ref height :int))))
1063
1064 (export 'text-view-get-line-yrange)
1065
1066 (defcfun gtk-text-view-get-iter-at-location :void
1067   (text-view (g-object text-view))
1068   (iter (g-boxed-foreign text-iter))
1069   (x :int)
1070   (y :int))
1071
1072 (defun text-view-get-iter-at-location (view x y)
1073   (let ((iter (make-instance 'text-iter)))
1074     (gtk-text-view-get-iter-at-location view iter x y)
1075     iter))
1076
1077 (export 'text-view-get-iter-at-location)
1078
1079 (defcfun gtk-text-view-get-iter-at-position :void
1080   (text-view (g-object text-view))
1081   (iter (g-boxed-foreign text-iter))
1082   (trailing (:pointer :int))
1083   (x :int)
1084   (y :int))
1085
1086 (defun text-view-get-iter-at-position (text-view x y)
1087   (with-foreign-object (trailing :int)
1088     (let ((iter (make-instance 'text-iter)))
1089       (gtk-text-view-get-iter-at-position text-view iter trailing x y)
1090       (values iter (mem-ref trailing :int)))))
1091
1092 (export 'text-view-get-iter-at-position)
1093
1094 (defcfun gtk-text-view-buffer-to-window-coords :void
1095   (text-view (g-object text-view))
1096   (win text-window-type)
1097   (buffer-x :int)
1098   (buffer-y :int)
1099   (window-x (:pointer :int))
1100   (window-y (:pointer :int)))
1101
1102 (defun text-view-buffer-to-window-coords (text-view window-type buffer-x buffer-y)
1103   (with-foreign-objects ((window-x :int) (window-y :int))
1104     (gtk-text-view-buffer-to-window-coords text-view window-type buffer-x buffer-y window-x window-y)
1105     (values (mem-ref window-x :int) (mem-ref window-y :int))))
1106
1107 (export 'text-view-buffer-to-window-coords)
1108
1109 (defcfun gtk-text-view-window-to-buffer-coords :void
1110   (text-view (g-object text-view))
1111   (win text-window-type)
1112   (window-x :int)
1113   (window-y :int)
1114   (buffer-x :pointer)
1115   (buffer-y :pointer))
1116
1117 (defun text-view-window-to-buffer-coords (text-view win window-x window-y)
1118   (with-foreign-objects ((buffer-x :int) (buffer-y :int))
1119     (gtk-text-view-window-to-buffer-coords text-view win window-x window-y buffer-x buffer-y)
1120     (values (mem-ref buffer-x :int)
1121             (mem-ref buffer-y :int))))
1122
1123 (export 'text-view-window-to-buffer-coords)
1124
1125 (defcfun gtk-text-view-get-window (g-object gdk:gdk-window)
1126   (text-view (g-object text-view))
1127   (win text-window-type))
1128
1129 (defun text-view-get-window (text-view win)
1130   (gtk-text-view-get-window text-view win))
1131
1132 (export 'text-view-get-window)
1133
1134 (defcfun (text-view-get-window-type "gtk_text_view_get_window_type") text-window-type
1135   (text-view (g-object text-view))
1136   (window (g-object gdk-window)))
1137
1138 (export 'text-view-get-window-type)
1139
1140 (defcfun gtk-text-view-set-border-window-size :void
1141   (text-view (g-object text-view))
1142   (window-type text-window-type)
1143   (size :int))
1144
1145 (defcfun (text-view-border-window-size "gtk_text_view_get_border_window_size") :int
1146   (text-view (g-object text-view))
1147   (window-type text-window-type))
1148
1149 (defun (setf text-view-border-window-size) (new-value text-view window-type)
1150   (gtk-text-view-set-border-window-size text-view window-type new-value)
1151   new-value)
1152
1153 (export 'text-view-border-window-size)
1154
1155 (defcfun (text-view-forward-display-line "gtk_text_view_forward_display_line") :boolean
1156   (text-view (g-object text-view))
1157   (iter (g-boxed-foreign text-iter)))
1158
1159 (export 'text-view-forward-display-line)
1160
1161 (defcfun (text-view-backward-display-line "gtk_text_view_backward_display_line") :boolean
1162   (text-view (g-object text-view))
1163   (iter (g-boxed-foreign text-iter)))
1164
1165 (export 'text-view-backward-display-line)
1166
1167 (defcfun (text-view-forward-display-line-end "gtk_text_view_forward_display_line_end") :boolean
1168   (text-view (g-object text-view))
1169   (iter (g-boxed-foreign text-iter)))
1170
1171 (export 'text-view-forward-display-line-end)
1172
1173 (defcfun (text-view-backward-display-line-start "gtk_text_view_backward_display_line_start") :boolean
1174   (text-view (g-object text-view))
1175   (iter (g-boxed-foreign text-iter)))
1176
1177 (export 'text-view-backward-display-line-start)
1178
1179 (defcfun (text-view-starts-display-line "gtk_text_view_starts_display_line") :boolean
1180   (text-view (g-object text-view))
1181   (iter (g-boxed-foreign text-iter)))
1182
1183 (export 'text-view-starts-display-line)
1184
1185 (defcfun (text-view-move-visually "gtk_text_view_move_visually") :boolean
1186   (text-view (g-object text-view))
1187   (iter (g-boxed-foreign text-iter))
1188   (count :int))
1189
1190 (export 'text-view-move-visually)
1191
1192 (defcfun (text-view-add-child-at-anchor "gtk_text_view_add_child_at_anchor") :void
1193   (text-view g-object)
1194   (child g-object)
1195   (anchor g-object))
1196
1197 (export 'text-view-add-child-at-anchor)
1198
1199 (defcfun (text-child-anchor-widgets "gtk_text_child_anchor_get_widgets") (glist (g-object widget) :free-from-foreign t)
1200   (anchor (g-object text-child-anchor)))
1201
1202 (export 'text-child-anchor-widgets)
1203
1204 (defcfun (text-view-add-child-in-window "gtk_text_view_add_child_in_window") :void
1205   (text-view (g-object text-view))
1206   (child (g-object widget))
1207   (which-window text-window-type)
1208   (x-pos :int)
1209   (y-pos :int))
1210
1211 (export 'text-view-add-child-in-window)
1212
1213 (defcfun (text-view-move-child "gtk_text_view_move_child") :void
1214   (text-view (g-object text-view))
1215   (child (g-object widget))
1216   (x-pos :int)
1217   (y-pos :int))
1218
1219 (export 'text-view-move-child)