Refactoring of GtkEntry
[cl-gtk2.git] / gtk / gtk.entry.lisp
1 (in-package :gtk)
2
3 ;; GtkEntry
4
5 (defcfun (entry-layout "gtk_entry_get_layout") g-object ;;PangoLayout
6   (entry (g-object entry)))
7
8 (export 'entry-layout)
9
10 (defcfun gtk-entry-get-layout-offsets :void
11   (entry (g-object entry))
12   (x (:pointer :int))
13   (y (:pointer :int)))
14
15 (defun gtk-entry-layout-offset (entry)
16   (with-foreign-objects ((x :int) (y :int))
17     (gtk-entry-get-layout-offsets entry x y)
18     (list (mem-ref x :int) (mem-ref y :int))))
19
20 (defcfun (entry-layout-index-to-text-index "gtk_entry_layout_index_to_text_index") :int
21   (entry (g-object entry))
22   (layout-index :int))
23
24 (export 'entry-layout-index-to-text-index)
25
26 (defcfun (entry-text-index-to-layout-index "gtk_entry_text_index_to_layout_index") :int
27   (entry (g-object entry))
28   (text-index :int))
29
30 (export 'entry-text-index-to-layout-info)
31
32 (defcfun (entry-icon-at-pos "gtk_entry_get_icon_at_pos") :int
33   (entry (g-object entry))
34   (x :int)
35   (y :int))
36
37 (export 'entry-icon-at-pos)
38
39 ;; GtkEditable
40
41 (defcfun (editable-select-region "gtk_editable_select_region") :void
42   (editable (g-object editable))
43   (start :int)
44   (end :int))
45
46 (export 'editable-select-region)
47
48 (defcfun gtk-editable-get-selection-bounds :boolean
49   (editable (g-object editable))
50   (start (:pointer :int))
51   (end (:pointer :int)))
52
53 (defun editable-selection (editable)
54   (with-foreign-objects ((start :int) (end :int))
55     (let ((selected-p (gtk-editable-get-selection-bounds editable start end)))
56       (values selected-p (mem-ref start :int) (mem-ref end :int)))))
57
58 (export 'editable-selection)
59
60 (defcfun gtk-editable-insert-text :void
61   (editable (g-object editable))
62   (new-text :string)
63   (new-text-length :int)
64   (position (:pointer :int)))
65
66 (defun editable-insert-text (editable text position)
67   (with-foreign-object (pos :int)
68     (setf (mem-ref pos :int) position)
69     (gtk-editable-insert-text editable text (length text) pos)
70     (mem-ref pos :int)))
71
72 (export 'editable-insert-text)
73
74 (defcfun gtk-editable-delete-text :void
75   (editable (g-object editable))
76   (start-pos :int)
77   (end-pos :int))
78
79 (defun editable-delete-text (editable &key start-pos end-pos)
80   (gtk-editable-delete-text editable (or start-pos -1) (or end-pos -1)))
81
82 (export 'editable-delete-text)
83
84 (defcfun gtk-editable-get-chars g-string
85   (editable (g-object editable))
86   (start-pos :int)
87   (end-pos :int))
88
89 (defun editable-get-chars (editable &key (start -1) (end -1))
90   (gtk-editable-get-chars editable start end))
91
92 (export 'editable-get-chars)
93
94 (defcfun (editable-cut-clipboard "gtk_editable_cut_clipboard") :void
95   (editable (g-object editable)))
96
97 (export 'editable-cut-clipboard)
98
99 (defcfun (editable-copy-clipboard "gtk_editable_copy_clipboard") :void
100   (editable (g-object editable)))
101
102 (export 'editable-copy-clipboard)
103
104 (defcfun (editable-paste-clipboard "gtk_editable_paste_clipboard") :void
105   (editable (g-object editable)))
106
107 (export 'editable-paste-clipboard)
108
109 (defcfun (editable-delete-selection "gtk_editable_delete_selection") :void
110   (editable (g-object editable)))
111
112 (export 'editable-delete-selection)
113
114 (defcfun (editable-position "gtk_editable_get_position") :int
115   (editable (g-object editable)))
116
117 (defcfun gtk-editable-set-position :void
118   (editable (g-object editable))
119   (pos :int))
120
121 (defun (setf editable-position) (position editable)
122   (gtk-editable-set-position editable position))
123
124 (export 'editable-position)
125
126 (defcfun (editable-editable "gtk_editable_get_editable") :boolean
127   (editable (g-object editable)))
128
129 (defcfun gtk-editable-set-editable :void
130   (editable (g-object editable))
131   (is-editable :boolean))
132
133 (defun (setf editable-editable) (is-editable editable)
134   (gtk-editable-set-editable editable is-editable))
135
136 (export 'editable-editable)