Add GtkEntryCompletion
[cl-gtk2.git] / gtk / gtk.entry.lisp
1 (in-package :gtk)
2
3 ;; GtkEntry
4
5 (defcfun gtk-entry-get-layout-offsets :void
6   (entry (g-object entry))
7   (x (:pointer :int))
8   (y (:pointer :int)))
9
10 (defun gtk-entry-layout-offset (entry)
11   (with-foreign-objects ((x :int) (y :int))
12     (gtk-entry-get-layout-offsets entry x y)
13     (list (mem-ref x :int) (mem-ref y :int))))
14
15 (defcfun (entry-layout-index-to-text-index "gtk_entry_layout_index_to_text_index") :int
16   (entry (g-object entry))
17   (layout-index :int))
18
19 (export 'entry-layout-index-to-text-index)
20
21 (defcfun (entry-text-index-to-layout-index "gtk_entry_text_index_to_layout_index") :int
22   (entry (g-object entry))
23   (text-index :int))
24
25 (export 'entry-text-index-to-layout-info)
26
27 (defcfun (entry-icon-at-pos "gtk_entry_get_icon_at_pos") :int
28   (entry (g-object entry))
29   (x :int)
30   (y :int))
31
32 (export 'entry-icon-at-pos)
33
34 (defcfun (entry-progress-pulse "gtk_entry_progress_pulse") :void
35   (entry (g-object entry)))
36
37 (export 'entry-progress-pulse)
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)
137
138 ;; GtkEntryCompletion
139
140 (define-cb-methods entry-completion-match-func :boolean
141   ((completion (g-object entry-completion))
142    (key :string)
143    (iter (g-boxed-foreign tree-iter))))
144
145 (defcfun (%gtk-entry-completion-set-match-func "gtk_entry_completion_set_match_func") :void
146   (completion (g-object entry-completion))
147   (func :pointer)
148   (data :pointer)
149   (destroy-notify :pointer))
150
151 (defun gtk-entry-completion-set-match-func (completion function)
152   (if function
153       (%gtk-entry-completion-set-match-func completion
154                                             (callback entry-completion-match-func-cb)
155                                             (create-fn-ref completion function)
156                                             (callback entry-completion-match-func-destroy-notify))
157       (%gtk-entry-completion-set-match-func completion
158                                             (null-pointer)
159                                             (null-pointer)
160                                             (null-pointer))))
161
162 (defcfun (entry-completion-complete "gtk_entry_completion_complete") :void
163   (completion (g-object entry-completion)))
164
165 (export 'entry-completion-complete)
166
167 (defcfun (entry-completion-completion-prefix "gtk_entry_completion_get_completion_prefix") (:string :free-from-foreign t)
168   (completion (g-object entry-completion)))
169
170 (export 'entry-completion-completion-prefix)
171
172 (defcfun (entry-completion-insert-prefix "gtk_entry_completion_insert_prefix") :void
173   (completion (g-object entry-completion)))
174
175 (export 'entry-completion-completion-prefix)
176
177 (defcfun (entry-completion-insert-action-text "gtk_entry_completion_insert_action_text") :void
178   (completion (g-object entry-completion))
179   (index :int)
180   (text :string))
181
182 (export 'entry-completion-insert-action-text)
183
184 (defcfun (entry-copmletion-insert-action-markup "gtk_entry_completion_insert_action_markup") :void
185   (completion (g-object entry-completion))
186   (index :int)
187   (markup :string))
188
189 (export 'entry-completion-insert-action-markup)
190
191 (defcfun (entry-completion-delete-action "gtk_entry_completion_delete_action") :void
192   (completion (g-object entry-completion))
193   (index :int))
194
195 (export 'entry-completion-delete-action)