chiark / gitweb /
Bug fixes
[clg] / gtk / gtkselection.lisp
... / ...
CommitLineData
1;; Common Lisp bindings for GTK+ v2.x
2;; Copyright 2005 Espen S. Johnsen <espen@users.sf.net>
3;;
4;; Permission is hereby granted, free of charge, to any person obtaining
5;; a copy of this software and associated documentation files (the
6;; "Software"), to deal in the Software without restriction, including
7;; without limitation the rights to use, copy, modify, merge, publish,
8;; distribute, sublicense, and/or sell copies of the Software, and to
9;; permit persons to whom the Software is furnished to do so, subject to
10;; the following conditions:
11;;
12;; The above copyright notice and this permission notice shall be
13;; included in all copies or substantial portions of the Software.
14;;
15;; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16;; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17;; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18;; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19;; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
23;; $Id: gtkselection.lisp,v 1.3 2006-02-08 21:58:49 espen Exp $
24
25
26(in-package "GTK")
27
28
29;;;; Selection
30
31(defbinding %target-list-ref () pointer
32 (location pointer))
33
34(defbinding %target-list-unref () nil
35 (location pointer))
36
37(defmethod reference-foreign ((class (eql (find-class 'target-list))) location)
38 (declare (ignore class))
39 (%target-list-ref location))
40
41(defmethod unreference-foreign ((class (eql (find-class 'target-list))) location)
42 (declare (ignore class))
43 (%target-list-unref location))
44
45(defbinding %target-list-new () pointer
46 (targets (vector (inlined target-entry)))
47 ((length targets) int))
48
49(defmethod initialize-instance ((target-list target-list) &key targets)
50 (setf
51 (slot-value target-list 'location)
52 (%target-list-new targets))
53 (call-next-method))
54
55(defbinding target-list-add (target-list target &optional flags info) nil
56 (target-list target-list)
57 (target gdk:atom)
58 (flags unsigned-int)
59 (info unsigned-int))
60
61(defbinding target-list-add-table (target-list targets) nil
62 (target-list target-list)
63 ((etypecase targets
64 ((or vector list) targets)
65 (target-entry (vector targets)))
66 (vector (inlined target-entry)))
67 ((etypecase targets
68 ((or vector list) (length targets))
69 (target-entry 1))
70 int))
71
72#+gtk2.6
73(progn
74 (defbinding target-list-add-text-targets (target-list info &optional writable-p) nil
75 (target-list target-list)
76 (info unsigned-int)
77 (writable-p boolean))
78
79 (defbinding target-list-add-image-targets (target-list info &optional writable-p) nil
80 (target-list target-list)
81 (info unsigned-int)
82 (writable-p boolean))
83
84 (defbinding target-list-add-uri-targets (target-list info &optional writable-p) nil
85 (target-list target-list)
86 (info unsigned-int)
87 (writable-p boolean)))
88
89(defbinding target-list-remove () nil
90 (target-list target-list)
91 (target gdk:atom))
92
93;; (defbinding target-list-find () nil
94;; (target-list target-list)
95;; (target gdk:atom)
96;; ...)
97
98(defbinding (selection-set-owner "gtk_selection_owner_set_for_display")
99 (widget selection time &optional (display (gdk:display-get-default)))
100 boolean
101 (display gdk:display)
102 (widget widget)
103 ((gdk:atom-intern selection) gdk:atom))
104
105(defbinding selection-add-target () nil
106 (widget widget)
107 (selection gdk:atom)
108 (target gdk:atom)
109 (info unsigned-int))
110
111(defbinding selection-add-targets (widget selection targets) nil
112 (widget widget)
113 (selection gdk:atom)
114 ((etypecase targets
115 ((or vector list) targets)
116 (target-entry (vector targets)))
117 (vector (inlined target-entry)))
118 ((etypecase targets
119 ((or vector list) (length targets))
120 (target-entry 1))
121 int))
122
123(defbinding selection-clear-targets () nil
124 (widget widget)
125 (selection gdk:atom))
126
127(defbinding selection-convert () boolean
128 (widget widget)
129 (selection gdk:atom)
130 (target gdk:atom)
131 (time unsigned-int))
132
133(defbinding selection-data-set () boolean
134 (selection-data selection-data)
135 (type gdk:atom)
136 (format int)
137 (data pointer)
138 (length int))
139
140(defbinding selection-data-set-text () boolean
141 (selection-data selection-data)
142 (text string)
143 (-1 integer))
144
145(defbinding selection-data-get-text () string
146 (selection-data selection-data))
147
148#+gtk2.6
149(progn
150 (defbinding selection-data-set-pixbuf () boolean
151 (selection-data selection-data)
152 (puxbuf gdk:pixbuf))
153
154 (defbinding selection-data-get-pixbuf () gdk:pixbuf
155 (selection-data selection-data))
156
157 (defbinding selection-data-set-uris () boolean
158 (selection-data selection-data)
159 (uris (null-terminated-vector string)))
160
161 (defbinding selection-data-get-uris () (null-terminated-vector string)
162 (selection-data selection-data)))
163
164(defbinding selection-data-get-targets () boolean
165 (selection-data selection-data)
166 (targets (vector gdk:atom n-atoms))
167 (n-atoms int))
168
169#+gtk2.6
170(defbinding selection-data-targets-include-image-p (selection-data &optional writable-p) boolean
171 (selection-data selection-data)
172 (writable-p boolean))
173
174(defbinding selection-data-targets-include-text-p (selection-data) boolean
175 (selection-data selection-data))
176
177(defbinding selection-remove-all () boolean
178 (widget widget))
179
180
181;;; Clipboard -- untestet
182
183(defbinding (clipboard-get "gtk_clipboard_get_for_display")
184 (selection &optional (display (gdk:display-get-default))) clipboard
185 (display gdk:display)
186 ((gdk:atom-intern selection) gdk:atom))
187
188
189(defcallback %clipboard-get-func (nil (clipboard pointer)
190 (selection-data selection-data)
191 (info int)
192 (user-data unsigned-int))
193 (funcall (car (find-user-data user-data)) selection-data info))
194
195(defcallback %clipboard-clear-func (nil (clipboard pointer)
196 (user-data unsigned-int))
197 (funcall (cdr (find-user-data user-data))))
198
199(defbinding clipboard-set-with-data (clipboard targets get-func clear-func) gobject
200 (clipboard clipboard)
201 (targets (vector (inlined target-entry)))
202 ((length targets) unsigned-int)
203 (%clipboard-get-func callback)
204 (%clipboard-clear-func callback)
205 ((register-user-data (cons get-func clear-func)) unsigned-int))
206
207(defbinding clipboard-clear () nil
208 (clipboard clipboard))
209
210(defbinding clipboard-set-text (clipboard text) nil
211 (clipboard clipboard)
212 (text string)
213 ((length text) int))
214
215#+gtk2.6
216(defbinding clipboard-set-image () nil
217 (clipboard clipboard)
218 (pixbuf gdk:pixbuf))
219
220(defun clipboard-set (clipboard object)
221 (etypecase object
222 (string (clipboard-set-text clipboard object))
223 #+gtk2.6
224 (gdk:pixbuf (clipboard-set-image clipboard object))))
225
226(defcallback %clipboard-receive-func (nil (clipboard pointer)
227 (selection-data selection-data)
228 (user-data unsigned-int))
229 (funcall (find-user-data user-data) selection-data))
230
231(defbinding clipboard-request-contents (clipboard target callback) nil
232 (clipboard clipboard)
233 ((gdk:atom-intern target) gdk:atom)
234 (%clipboard-receive-func callback)
235 ((register-callback-function callback) unsigned-int))
236
237(defcallback %clipboard-text-receive-func (nil (clipboard pointer)
238 (text (copy-of string))
239 (user-data unsigned-int))
240 (funcall (find-user-data user-data) text))
241
242(defbinding clipboard-request-text (clipboard callback) nil
243 (clipboard clipboard)
244 (%clipboard-text-receive-func callback)
245 ((register-callback-function callback) unsigned-int))
246
247#+gtk2.6
248(progn
249 (defcallback %clipboard-image-receive-func (nil (clipboard pointer)
250 (image gdk:pixbuf)
251 (user-data unsigned-int))
252 (funcall (find-user-data user-data) image))
253
254 (defbinding clipboard-request-image (clipboard callback) nil
255 (clipboard clipboard)
256 (%clipboard-image-receive-func callback)
257 ((register-callback-function callback) unsigned-int)))
258
259
260(defcallback %clipboard-targets-receive-func
261 (nil (clipboard pointer)
262 (atoms (vector gdk:atom n-atoms))
263 (n-atoms unsigned-int)
264 (user-data unsigned-int))
265 (funcall (find-user-data user-data) atoms))
266
267(defbinding clipboard-request-targets (clipboard callback) nil
268 (clipboard clipboard)
269 (%clipboard-targets-receive-func callback)
270 ((register-callback-function callback) unsigned-int))
271
272(defbinding clipboard-wait-for-contents () selection-data
273 (clipboard clipboard))
274
275(defbinding clipboard-wait-for-text () string
276 (clipboard clipboard))
277
278#+gtk2.6
279(defbinding clipboard-wait-for-image () (referenced gdk:pixbuf)
280 (clipboard clipboard))
281
282(defbinding clipboard-wait-is-text-available-p () boolean
283 (clipboard clipboard))
284
285#+gtk2.6
286(defbinding clipboard-wait-is-image-available-p () boolean
287 (clipboard clipboard))
288
289(defbinding clipboard-wait-for-targets () boolean
290 (clipboard clipboard)
291 (targets (vector gdk:atom n-targets) :out)
292 (n-targets unsigned-int :out))
293
294#+gtk2.6
295(defbinding clipboard-wait-is-target-available-p () boolean
296 (clipboard clipboard)
297 (target gdk:atom))
298
299#+gtk2.6
300(defbinding clipboard-set-can-store () nil
301 (clipboard clipboard)
302 (targets (vector gdk:atom))
303 ((length targets) int))
304
305#+gtk2.6
306(defbinding clipboard-store () nil
307 (clipboard clipboard))
308
309
310;;;; Drag and Drop
311
312(defbinding drag-dest-set (widget flags targets actions) nil
313 (widget widget)
314 (flags dest-defaults)
315 ((etypecase targets
316 ((or vector list) targets)
317 (target-entry (vector targets)))
318 (vector (inlined target-entry)))
319 ((etypecase targets
320 ((or vector list) (length targets))
321 (target-entry 1))
322 int)
323 (actions gdk:drag-action))
324
325(defbinding drag-dest-set-proxy () nil
326 (widget widget)
327 (window gdk:window)
328 (protocol gdk:drag-protocol)
329 (use-coordinates-p boolean))
330
331(defbinding drag-dest-unset () nil
332 (widget widget))
333
334(defbinding drag-dest-find-target () gdk:atom
335 (widget widget)
336 (context gdk:drag-context)
337 (targets target-list))
338
339(defbinding drag-dest-get-target-list () target-list
340 (widget widget))
341
342(defbinding drag-dest-set-target-list () nil
343 (widget widget)
344 (targets target-list))
345
346#+gtk2.6
347(progn
348 (defbinding drag-dest-add-text-targets () nil
349 (widget widget))
350
351 (defbinding drag-dest-add-image-targets () nil
352 (widget widget))
353
354 (defbinding drag-dest-add-uri-targets () nil
355 (widget widget)))
356
357(defbinding drag-finish () nil
358 (context gdk:drag-context)
359 (success boolean)
360 (delete boolean)
361 (time unsigned-int))
362
363(defbinding drag-get-data () nil
364 (widget widget)
365 (context gdk:drag-context)
366 (target gdk:atom)
367 (time unsigned-int))
368
369(defbinding drag-get-source-widget () widget
370 (context gdk:drag-context))
371
372(defbinding drag-highlight () nil
373 (widget widget))
374
375(defbinding drag-unhighlight () nil
376 (widget widget))
377
378(defbinding drag-begin () gdk:drag-context
379 (widget widget)
380 (targets target-list)
381 (actions gdk:drag-action)
382 (button int)
383 (event gdk:event))
384
385(defbinding %drag-set-icon-widget () nil
386 (context gdk:drag-context)
387 (widget widget)
388 (hot-x int)
389 (hot-y int))
390
391(defbinding %drag-set-icon-pixmap () nil
392 (context gdk:drag-context)
393 (pixmap gdk:pixmap)
394 (mask gdk:bitmap)
395 (hot-x int)
396 (hot-y int))
397
398(defbinding %drag-set-icon-pixbuf () nil
399 (context gdk:drag-context)
400 (pixbuf gdk:pixbuf)
401 (hot-x int)
402 (hot-y int))
403
404(defbinding %drag-set-icon-stock () nil
405 (context gdk:drag-context)
406 (stock-id string)
407 (hot-x int)
408 (hot-y int))
409
410(defbinding %drag-set-icon-default () nil
411 (context gdk:drag-context))
412
413(defun drag-set-icon (context icon &optional (hot-x 0) (hot-y 0))
414 (etypecase icon
415 (widget (%drag-set-icon-widget context icon hot-x hot-y))
416 (gdk:pixbuf (%drag-set-icon-pixbuf context icon hot-x hot-y))
417 (string (%drag-set-icon-stock context icon hot-x hot-y))
418 (vector (multiple-value-bind (pixmap mask) (gdk:pixmap-create icon)
419 (%drag-set-icon-pixmap context pixmap mask hot-x hot-y)))
420 (pathname (let ((pixbuf (gdk:pixbuf-load icon)))
421 (%drag-set-icon-pixbuf context pixbuf hot-x hot-y)))
422 (null (%drag-set-icon-default context))))
423
424(defbinding drag-check-threshold-p () boolean
425 (widget widget)
426 (start-x int)
427 (start-y int)
428 (current-x int)
429 (current-y int))
430
431(defbinding drag-source-set (widget start-button-mask targets actions) nil
432 (widget widget)
433 (start-button-mask gdk:modifier-type)
434 ((etypecase targets
435 ((or vector list) targets)
436 (target-entry (vector targets)))
437 (vector (inlined target-entry)))
438 ((etypecase targets
439 ((or vector list) (length targets))
440 (target-entry 1))
441 int)
442 (actions gdk:drag-action))
443
444(defbinding %drag-source-set-icon-pixbuf () nil
445 (widget widget)
446 (pixbuf gdk:pixbuf))
447
448(defbinding %drag-source-set-icon-stock () nil
449 (widget widget)
450 (pixbuf gdk:pixbuf))
451
452(defun drag-source-set-icon (widget icon)
453 (etypecase icon
454 (gdk:pixbuf (%drag-source-set-icon-pixbuf widget icon))
455 (string (%drag-source-set-icon-stock widget icon))
456; (vector )
457 (pathname (let ((pixbuf (gdk:pixbuf-load icon)))
458 (%drag-source-set-icon-pixbuf widget pixbuf)))))
459
460(defbinding drag-source-unset () nil
461 (widget widget))
462
463(defbinding drag-source-set-target-list () nil
464 (widget widget)
465 (targets (or null target-list)))
466
467(defbinding drag-source-get-target-list () target-list
468 (widget widget))
469
470#+gtk2.6
471(progn
472 (defbinding drag-source-add-text-targets () nil
473 (widget widget))
474
475 (defbinding drag-source-add-image-targets () nil
476 (widget widget))
477
478 (defbinding drag-source-add-uri-targets () nil
479 (widget widget)))