55212af1 |
1 | ;; Common Lisp bindings for GTK+ v2.x |
2 | ;; Copyright 2004-2005 Espen S. Johnsen <espen@users.sf.net> |
985713d7 |
3 | ;; |
55212af1 |
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: |
985713d7 |
11 | ;; |
55212af1 |
12 | ;; The above copyright notice and this permission notice shall be |
13 | ;; included in all copies or substantial portions of the Software. |
985713d7 |
14 | ;; |
55212af1 |
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 | |
cc4896ef |
23 | ;; $Id: gtktree.lisp,v 1.27 2007/05/10 20:20:05 espen Exp $ |
985713d7 |
24 | |
25 | |
26 | (in-package "GTK") |
27 | |
28 | |
29 | ;;;; Cell Layout |
30 | |
31 | (defbinding cell-layout-pack-start () nil |
32 | (cell-layout cell-layout) |
33 | (cell cell-renderer) |
34 | (expand boolean)) |
35 | |
36 | (defbinding cell-layout-pack-end () nil |
37 | (cell-layout cell-layout) |
38 | (cell cell-renderer) |
39 | (expand boolean)) |
40 | |
41 | (defun cell-layout-pack (layout cell &key end expand) |
42 | (if end |
43 | (cell-layout-pack-end layout cell expand) |
44 | (cell-layout-pack-start layout cell expand))) |
45 | |
4e169141 |
46 | |
985713d7 |
47 | (defbinding cell-layout-reorder () nil |
48 | (cell-layout cell-layout) |
49 | (cell cell-renderer) |
50 | (position int)) |
51 | |
52 | (defbinding cell-layout-clear () nil |
53 | (cell-layout cell-layout)) |
54 | |
da82be16 |
55 | (defbinding cell-layout-add-attribute (cell-layout cell attribute column) nil |
985713d7 |
56 | (cell-layout cell-layout) |
57 | (cell cell-renderer) |
58 | ((string-downcase attribute) string) |
da82be16 |
59 | (column int)) |
985713d7 |
60 | |
a92553bd |
61 | (define-callback-marshal %cell-layout-data-callback nil |
62 | (cell-layout cell-renderer tree-model tree-iter)) |
985713d7 |
63 | |
64 | (defbinding cell-layout-set-cell-data-func (cell-layout cell function) nil |
65 | (cell-layout cell-layout) |
66 | (cell cell-renderer) |
a92553bd |
67 | (%cell-layout-data-callback callback) |
985713d7 |
68 | ((register-callback-function function) unsigned-int) |
a92553bd |
69 | (user-data-destroy-callback callback)) |
985713d7 |
70 | |
71 | (defbinding cell-layout-clear-attributes () nil |
72 | (cell-layout cell-layout) |
73 | (cell cell-renderer)) |
74 | |
75 | |
038891cf |
76 | ;;;; Cell Renderer |
77 | |
f335841f |
78 | (defmethod compute-signal-function ((gobject cell-renderer-toggle) (signal (eql 'toggled)) function object args) |
79 | (declare (ignore gobject signal function object args)) |
038891cf |
80 | (let ((function (call-next-method))) |
81 | #'(lambda (object path) |
82 | (funcall function object (ensure-tree-path path))))) |
83 | |
985713d7 |
84 | |
85 | ;;;; List Store |
86 | |
4e169141 |
87 | (defmethod initialize-instance ((list-store list-store) &key column-types |
88 | column-names initial-content) |
985713d7 |
89 | (call-next-method) |
4e169141 |
90 | (%list-store-set-column-types list-store column-types) |
91 | (when column-names |
70b52c33 |
92 | (setf |
1e5e3e14 |
93 | (user-data list-store 'column-names) |
70b52c33 |
94 | (coerce column-names 'vector))) |
4e169141 |
95 | (when initial-content |
96 | (loop |
97 | with iter = (make-instance 'tree-iter) |
98 | for row in initial-content |
99 | do (list-store-append list-store row iter)))) |
985713d7 |
100 | |
985713d7 |
101 | |
4e169141 |
102 | (defbinding %list-store-set-column-types () nil |
985713d7 |
103 | (list-store list-store) |
4e169141 |
104 | ((length columns) unsigned-int) |
105 | (columns (vector gtype))) |
985713d7 |
106 | |
eb0b609d |
107 | (defbinding list-store-remove (store row) boolean |
108 | (store list-store) |
109 | ((ensure-tree-iter store row) tree-iter)) |
110 | |
111 | (defbinding %list-store-set-value () nil |
985713d7 |
112 | (list-store list-store) |
eb0b609d |
113 | (tree-iter tree-iter) |
114 | (column int) |
115 | (gvalue gvalue)) |
985713d7 |
116 | |
eb0b609d |
117 | (defmethod (setf tree-model-value) (value (store list-store) row column) |
118 | (let* ((index (tree-model-column-index store column)) |
119 | (type (tree-model-get-column-type store index))) |
120 | (with-gvalue (gvalue type value) |
121 | (%list-store-set-value store (ensure-tree-iter store row) index gvalue))) |
122 | value) |
05a3b9e4 |
123 | |
eb0b609d |
124 | (defbinding %list-store-insert-with-valuesv () nil |
125 | (list-store list-store) |
126 | (tree-iter tree-iter) |
127 | (position int) |
128 | (columns (vector int)) |
129 | (gvalues pointer) |
130 | ((length columns) int)) |
05a3b9e4 |
131 | |
4e169141 |
132 | (defbinding %list-store-insert () nil |
985713d7 |
133 | (list-store list-store) |
4e169141 |
134 | (tree-iter tree-iter) |
985713d7 |
135 | (position int)) |
136 | |
eb0b609d |
137 | (defun list-store-insert (store position &optional data (iter (make-instance 'tree-iter))) |
138 | (etypecase data |
139 | (null (%list-store-insert store iter position)) |
140 | |
141 | (list (with-memory (gvalues (* (/ (length data) 2) +gvalue-size+)) |
142 | (let ((columns |
143 | (loop |
144 | for (column value) on data by #'cddr |
145 | as index = (tree-model-column-index store column) |
146 | as type = (tree-model-get-column-type store index) |
147 | as gvalue = gvalues then (pointer+ gvalue +gvalue-size+) |
148 | do (gvalue-init gvalue type value) |
149 | collect index))) |
150 | (unwind-protect |
151 | (%list-store-insert-with-valuesv store iter position columns gvalues) |
152 | (loop |
153 | repeat (length columns) |
154 | as gvalue = gvalues then (pointer+ gvalue +gvalue-size+) |
155 | do (gvalue-unset gvalue)))))) |
156 | |
157 | (vector (with-memory (gvalues (* (length data) +gvalue-size+)) |
158 | (let ((columns |
159 | (loop |
160 | for index below (length data) |
161 | as type = (tree-model-get-column-type store index) |
162 | as gvalue = gvalues then (pointer+ gvalue +gvalue-size+) |
163 | do (gvalue-init gvalue type (aref data index)) |
164 | collect index))) |
165 | (unwind-protect |
166 | (%list-store-insert-with-valuesv store iter position columns gvalues)) |
167 | (loop |
168 | repeat (length data) |
169 | as gvalue = gvalues then (pointer+ gvalue +gvalue-size+) |
170 | do (gvalue-unset gvalue)))))) |
4e169141 |
171 | iter) |
172 | |
173 | (defbinding %list-store-insert-before () nil |
985713d7 |
174 | (list-store list-store) |
4e169141 |
175 | (tree-iter tree-iter) |
985713d7 |
176 | (sibling (or null tree-iter))) |
177 | |
4e169141 |
178 | (defun list-store-insert-before |
179 | (store sibling &optional data (iter (make-instance 'tree-iter))) |
180 | (%list-store-insert-before store iter sibling) |
eb0b609d |
181 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
182 | iter) |
183 | |
184 | (defbinding %list-store-insert-after |
185 | (list-store &optional sibling (tree-iter (make-instance 'tree-iter))) nil |
985713d7 |
186 | (list-store list-store) |
4e169141 |
187 | (tree-iter tree-iter) |
985713d7 |
188 | (sibling (or null tree-iter))) |
189 | |
4e169141 |
190 | (defun list-store-insert-after |
191 | (store sibling &optional data (iter (make-instance 'tree-iter))) |
192 | (%list-store-insert-after store iter sibling) |
eb0b609d |
193 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
194 | iter) |
195 | |
196 | (defbinding %list-store-prepend () nil |
985713d7 |
197 | (list-store list-store) |
4e169141 |
198 | (tree-iter tree-iter)) |
199 | |
200 | (defun list-store-prepend |
201 | (store &optional data (iter (make-instance 'tree-iter))) |
202 | (%list-store-prepend store iter) |
eb0b609d |
203 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
204 | iter) |
985713d7 |
205 | |
4e169141 |
206 | (defbinding %list-store-append () nil |
985713d7 |
207 | (list-store list-store) |
4e169141 |
208 | (tree-iter tree-iter)) |
209 | |
210 | (defun list-store-append |
211 | (store &optional data (iter (make-instance 'tree-iter))) |
212 | (%list-store-append store iter) |
eb0b609d |
213 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
214 | iter) |
985713d7 |
215 | |
216 | (defbinding list-store-clear () nil |
217 | (list-store list-store)) |
218 | |
219 | (defbinding list-store-reorder () nil |
220 | (list-store list-store) |
221 | (new-order (vector int))) |
222 | |
223 | (defbinding list-store-swap () nil |
224 | (list-store list-store) |
225 | (a tree-iter) |
226 | (b tree-iter)) |
227 | |
228 | (defbinding list-store-move-before () nil |
229 | (list-store list-store) |
230 | (iter tree-iter) |
231 | (psoition (or null tree-iter))) |
232 | |
985713d7 |
233 | (defbinding list-store-move-after () nil |
234 | (list-store list-store) |
235 | (iter tree-iter) |
236 | (psoition tree-iter)) |
237 | |
238 | |
eb0b609d |
239 | ;;; Tree Path |
985713d7 |
240 | |
4e169141 |
241 | (defbinding %tree-path-free () nil |
242 | (location pointer)) |
243 | |
244 | (defbinding %tree-path-get-indices () pointer |
245 | (location pointer)) |
246 | |
247 | (defbinding %tree-path-get-depth () int |
248 | (location pointer)) |
249 | |
250 | (defun %make-tree-path (path) |
928e2b4e |
251 | (let* ((c-vector (make-c-vector 'int (length path) :content path)) |
252 | (pointer-offset (adjust-offset (size-of 'int) 'pointer)) |
253 | (location (allocate-memory (+ pointer-offset (size-of 'pointer))))) |
4e169141 |
254 | (funcall (writer-function 'int) (length path) location) |
928e2b4e |
255 | (funcall (writer-function 'pointer) c-vector location pointer-offset) |
4e169141 |
256 | location)) |
257 | |
05a3b9e4 |
258 | (defun %tree-path-to-vector (location) |
259 | (let ((indices (%tree-path-get-indices location)) |
260 | (depth (%tree-path-get-depth location))) |
261 | (if (null-pointer-p indices) |
262 | #() |
263 | (map-c-vector 'vector #'identity indices 'int depth)))) |
4e169141 |
264 | |
1e5e3e14 |
265 | (defmacro %with-tree-path ((var path) &body body) |
928e2b4e |
266 | (let* ((pointer-offset (adjust-offset (size-of 'int) 'pointer)) |
267 | (vector-offset (adjust-offset (+ pointer-offset (size-of 'pointer)) 'int))) |
268 | `(with-memory (,var (+ ,vector-offset (* ,(size-of 'int) (length ,path)))) |
1e5e3e14 |
269 | (funcall (writer-function 'int) (length ,path) ,var) |
928e2b4e |
270 | (setf (ref-pointer ,var ,pointer-offset) (pointer+ ,var ,vector-offset)) |
1e5e3e14 |
271 | (make-c-vector 'int (length ,path) :content ,path :location (pointer+ ,var ,vector-offset)) |
272 | ,@body))) |
273 | |
4e169141 |
274 | (eval-when (:compile-toplevel :load-toplevel :execute) |
4d1fea77 |
275 | (define-type-method alien-type ((type tree-path)) |
276 | (declare (ignore type)) |
4e169141 |
277 | (alien-type 'pointer)) |
278 | |
1e5e3e14 |
279 | (define-type-method size-of ((type tree-path) &key inlined) |
280 | (assert-not-inlined type inlined) |
4e169141 |
281 | (size-of 'pointer)) |
282 | |
1e5e3e14 |
283 | (define-type-method alien-arg-wrapper ((type tree-path) var path style form &optional copy-in-p) |
4d1fea77 |
284 | (declare (ignore type)) |
1e5e3e14 |
285 | (cond |
286 | ((and (in-arg-p style) copy-in-p) |
287 | `(with-pointer (,var (%make-tree-path ,path)) |
288 | ,form)) |
289 | ((and (in-arg-p style) (not (out-arg-p style))) |
290 | `(%with-tree-path (,var ,path) |
291 | ,form)) |
292 | ((and (in-arg-p style) (out-arg-p style)) |
293 | (let ((tree-path (make-symbol "SYMBOL"))) |
294 | `(%with-tree-path (,tree-path ,path) |
295 | (with-pointer (,var ,tree-path) |
296 | ,form)))) |
297 | ((and (out-arg-p style) (not (in-arg-p style))) |
298 | `(with-pointer (,var) |
299 | ,form)))) |
300 | |
301 | (define-type-method to-alien-form ((type tree-path) path &optional copy-p) |
302 | (declare (ignore type copy-p)) |
4e169141 |
303 | `(%make-tree-path ,path)) |
304 | |
1e5e3e14 |
305 | (define-type-method from-alien-form ((type tree-path) location &key (ref :free)) |
4d1fea77 |
306 | (declare (ignore type)) |
1e5e3e14 |
307 | `(prog1 |
308 | (%tree-path-to-vector ,location) |
309 | ,(when (eq ref :free) |
310 | `(%tree-path-free ,location))))) |
4e169141 |
311 | |
1e5e3e14 |
312 | (define-type-method to-alien-function ((type tree-path) &optional copy-p) |
4d1fea77 |
313 | (declare (ignore type)) |
1e5e3e14 |
314 | #'%make-tree-path |
315 | (unless copy-p |
316 | #'(lambda (tree-path location) |
317 | (declare (ignore tree-path)) |
05a3b9e4 |
318 | (%tree-path-free location)))) |
05a3b9e4 |
319 | |
1e5e3e14 |
320 | (define-type-method from-alien-function ((type tree-path) &key (ref :free)) |
4d1fea77 |
321 | (declare (ignore type)) |
1e5e3e14 |
322 | (if (eq ref :free) |
323 | #'(lambda (location) |
324 | (prog1 |
325 | (%tree-path-to-vector location) |
326 | (%tree-path-free location))) |
327 | #'(lambda (location) |
328 | (%tree-path-to-vector location)))) |
329 | |
330 | (define-type-method writer-function ((type tree-path) &key temp inlined) |
331 | (declare (ignore temp)) |
332 | (assert-not-inlined type inlined) |
05a3b9e4 |
333 | (let ((writer (writer-function 'pointer))) |
334 | #'(lambda (path location &optional (offset 0)) |
335 | (funcall writer (%make-tree-path path) location offset)))) |
336 | |
1e5e3e14 |
337 | (define-type-method reader-function ((type tree-path) &key ref inlined) |
338 | (declare (ignore ref)) |
339 | (assert-not-inlined type inlined) |
340 | #'(lambda (location &optional (offset 0)) |
341 | (%tree-path-to-vector (ref-pointer location offset)))) |
4e169141 |
342 | |
1e5e3e14 |
343 | (define-type-method destroy-function ((type tree-path) &key temp inlined) |
344 | (declare (ignore temp)) |
345 | (assert-not-inlined type inlined) |
346 | #'(lambda (location &optional (offset 0)) |
347 | (%tree-path-free (ref-pointer location offset)))) |
c8211115 |
348 | |
6beb5074 |
349 | (defun ensure-tree-path (path) |
350 | (etypecase path |
351 | (string (coerce (clg-utils:split-string path :delimiter #\:) 'vector)) |
352 | (vector path))) |
353 | |
4e169141 |
354 | |
eb0b609d |
355 | ;;; Tree Model |
356 | |
f335841f |
357 | (defgeneric tree-model-value (model row column)) |
358 | (defgeneric (setf tree-model-value) (value model row column)) |
359 | (defgeneric tree-model-row-data (model row)) |
360 | (defgeneric (setf tree-model-row-data) (data model row)) |
361 | (defgeneric tree-model-column-index (model column)) |
362 | (defgeneric tree-model-column-name (model index)) |
363 | |
364 | |
4e169141 |
365 | (defbinding %tree-row-reference-new () pointer |
366 | (model tree-model) |
367 | (path tree-path)) |
368 | |
39db92d4 |
369 | (defmethod allocate-foreign ((reference tree-row-reference) &key model path) |
370 | (%tree-row-reference-new model path)) |
4e169141 |
371 | |
372 | (defbinding tree-row-reference-get-path () tree-path |
373 | (reference tree-row-reference)) |
374 | |
375 | (defbinding (tree-row-reference-valid-p "gtk_tree_row_reference_valid") () boolean |
376 | (reference tree-row-reference)) |
377 | |
378 | |
eb0b609d |
379 | (defbinding tree-model-get-column-type () gtype |
4e169141 |
380 | (tree-model tree-model) |
381 | (index int)) |
382 | |
eb0b609d |
383 | (defbinding tree-model-get-iter (model path &optional (iter (make-instance 'tree-iter))) boolean |
4e169141 |
384 | (model tree-model) |
1e5e3e14 |
385 | (iter tree-iter :in/return) |
4e169141 |
386 | (path tree-path)) |
387 | |
eb0b609d |
388 | (defun ensure-tree-iter (model row) |
389 | (etypecase row |
390 | (tree-iter row) |
391 | (tree-path |
392 | (multiple-value-bind (valid-p iter) (tree-model-get-iter model row) |
393 | (if valid-p |
394 | iter |
395 | (error "Invalid tree path for ~A: ~A" model row)))) |
396 | (tree-row-reference |
397 | (let ((path (tree-row-reference-get-path row))) |
398 | (if path |
399 | (ensure-tree-iter model path) |
400 | (error "~A not valid" row)))))) |
401 | |
4e169141 |
402 | (defbinding tree-model-get-path () tree-path |
403 | (tree-model tree-model) |
404 | (iter tree-iter)) |
405 | |
406 | (defbinding %tree-model-get-value () nil |
407 | (tree-model tree-model) |
408 | (iter tree-iter) |
409 | (column int) |
410 | (gvalue gvalue)) |
411 | |
70b52c33 |
412 | (defmethod tree-model-value ((model tree-model) row column) |
eb0b609d |
413 | (let ((index (tree-model-column-index model column))) |
780a4e24 |
414 | (with-gvalue (gvalue) |
eb0b609d |
415 | (%tree-model-get-value model (ensure-tree-iter model row) index gvalue)))) |
416 | |
eb0b609d |
417 | (defmethod tree-model-row-data ((model tree-model) row) |
418 | (coerce |
419 | (loop |
420 | with iter = (ensure-tree-iter model row) |
421 | for index from 0 to (tree-model-n-columns model) |
422 | collect (tree-model-value model iter index)) |
423 | 'vector)) |
424 | |
4e169141 |
425 | |
426 | (defbinding tree-model-iter-next () boolean |
427 | (tree-model tree-model) |
1e5e3e14 |
428 | (iter tree-iter :in/return)) |
4e169141 |
429 | |
430 | (defbinding tree-model-iter-children |
431 | (tree-model parent &optional (iter (make-instance 'tree-iter))) boolean |
432 | (tree-model tree-model) |
1e5e3e14 |
433 | (iter tree-iter :in/return) |
4e169141 |
434 | (parent (or null tree-iter))) |
435 | |
436 | (defbinding (tree-model-iter-has-child-p "gtk_tree_model_iter_has_child") |
437 | () boolean |
438 | (tree-model tree-model) |
439 | (iter tree-iter)) |
440 | |
ee950f05 |
441 | (defbinding tree-model-iter-n-children (tree-model &optional iter) int |
4e169141 |
442 | (tree-model tree-model) |
ee950f05 |
443 | (iter (or null tree-iter))) |
4e169141 |
444 | |
445 | (defbinding tree-model-iter-nth-child |
3d36c5d6 |
446 | (tree-model parent n &optional (iter (make-instance 'tree-iter))) boolean |
4e169141 |
447 | (tree-model tree-model) |
1e5e3e14 |
448 | (iter tree-iter :in/return) |
4e169141 |
449 | (parent (or null tree-iter)) |
450 | (n int)) |
451 | |
452 | (defbinding tree-model-iter-parent |
453 | (tree-model child &optional (iter (make-instance 'tree-iter))) boolean |
454 | (tree-model tree-model) |
1e5e3e14 |
455 | (iter tree-iter :in/return) |
4e169141 |
456 | (child tree-iter)) |
457 | |
a92553bd |
458 | (define-callback-marshal %tree-model-foreach-callback boolean |
459 | (tree-model tree-path tree-iter)) |
4e169141 |
460 | |
a92553bd |
461 | (defbinding %tree-model-foreach (tree-model callback-id) nil |
4e169141 |
462 | (tree-model tree-model) |
a92553bd |
463 | (%tree-model-foreach-callback callback) |
4e169141 |
464 | (callback-id unsigned-int)) |
465 | |
466 | (defun tree-model-foreach (model function) |
467 | (with-callback-function (id function) |
468 | (%tree-model-foreach model id))) |
469 | |
470 | (defbinding tree-model-row-changed () nil |
471 | (tree-model tree-model) |
472 | (path tree-path) |
473 | (iter tree-iter)) |
474 | |
475 | (defbinding tree-model-row-inserted () nil |
476 | (tree-model tree-model) |
477 | (path tree-path) |
478 | (iter tree-iter)) |
479 | |
480 | (defbinding tree-model-row-has-child-toggled () nil |
481 | (tree-model tree-model) |
482 | (path tree-path) |
483 | (iter tree-iter)) |
484 | |
485 | (defbinding tree-model-row-deleted () nil |
486 | (tree-model tree-model) |
487 | (path tree-path) |
488 | (iter tree-iter)) |
489 | |
490 | (defbinding tree-model-rows-reordered () nil |
491 | (tree-model tree-model) |
492 | (path tree-path) |
493 | (iter tree-iter) |
494 | (new-order int)) |
495 | |
eb0b609d |
496 | (defmethod tree-model-column-index ((model tree-model) column) |
4e169141 |
497 | (or |
498 | (etypecase column |
499 | (number column) |
eb0b609d |
500 | (string (position column (user-data model 'column-names) :test #'string=)) |
501 | (symbol (position column (user-data model 'column-names)))) |
4e169141 |
502 | (error "~A has no column ~S" model column))) |
503 | |
eb0b609d |
504 | (defmethod tree-model-column-name ((model tree-model) index) |
1e5e3e14 |
505 | (svref (user-data model 'column-names) index)) |
da82be16 |
506 | |
4e169141 |
507 | |
eb0b609d |
508 | (defmethod (setf tree-model-row-data) ((data list) (model tree-model) (iter tree-iter)) |
509 | (loop |
510 | for (column value) on data by #'cddr |
511 | do (setf (tree-model-value model iter column) value)) |
4e169141 |
512 | data) |
513 | |
eb0b609d |
514 | (defmethod (setf tree-model-row-data) ((data vector) (model tree-model) row) |
515 | (loop |
516 | with iter = (ensure-tree-iter model row) |
517 | for index from 0 |
518 | for value across data |
519 | do (setf (tree-model-value model iter index) value)) |
520 | data) |
985713d7 |
521 | |
522 | |
05a3b9e4 |
523 | ;;; Tree Selection |
524 | |
a92553bd |
525 | (define-callback-marshal %tree-selection-callback boolean |
526 | (tree-selection tree-model tree-path (path-currently-selected boolean))) |
05a3b9e4 |
527 | |
528 | (defbinding tree-selection-set-select-function (selection function) nil |
529 | (selection tree-selection) |
a92553bd |
530 | (%tree-selection-callback callback) |
05a3b9e4 |
531 | ((register-callback-function function) unsigned-int) |
a92553bd |
532 | (user-data-destroy-callback callback)) |
05a3b9e4 |
533 | |
534 | (defbinding tree-selection-get-selected |
535 | (selection &optional (iter (make-instance 'tree-iter))) boolean |
536 | (selection tree-selection) |
537 | (nil null) |
1e5e3e14 |
538 | (iter tree-iter :in/return)) |
05a3b9e4 |
539 | |
a92553bd |
540 | (define-callback-marshal %tree-selection-foreach-callback nil (tree-model tree-path tree-iter)) |
05a3b9e4 |
541 | |
a92553bd |
542 | (defbinding %tree-selection-selected-foreach (tree-selection callback-id) nil |
05a3b9e4 |
543 | (tree-selection tree-selection) |
a92553bd |
544 | (%tree-selection-foreach-callback callback) |
05a3b9e4 |
545 | (callback-id unsigned-int)) |
546 | |
547 | (defun tree-selection-selected-foreach (selection function) |
548 | (with-callback-function (id function) |
549 | (%tree-selection-selected-foreach selection id))) |
550 | |
551 | (defbinding tree-selection-get-selected-rows () (glist tree-path) |
552 | (tree-selection tree-selection) |
553 | (nil null)) |
554 | |
555 | (defbinding tree-selection-count-selected-rows () int |
556 | (tree-selection tree-selection)) |
557 | |
558 | (defbinding %tree-selection-select-path () nil |
559 | (tree-selection tree-selection) |
560 | (tree-path tree-path)) |
561 | |
562 | (defbinding %tree-selection-unselect-path () nil |
563 | (tree-selection tree-selection) |
564 | (tree-path tree-path)) |
565 | |
566 | (defbinding %tree-selection-path-is-selected () boolean |
567 | (tree-selection tree-selection) |
568 | (tree-path tree-path)) |
569 | |
570 | (defbinding %tree-selection-select-iter () nil |
571 | (tree-selection tree-selection) |
572 | (tree-path tree-path)) |
573 | |
574 | (defbinding %tree-selection-unselect-iter () nil |
575 | (tree-selection tree-selection) |
576 | (tree-path tree-path)) |
577 | |
578 | (defbinding %tree-selection-iter-is-selected () boolean |
579 | (tree-selection tree-selection) |
580 | (tree-path tree-path)) |
581 | |
582 | (defun tree-selection-select (selection row) |
583 | (etypecase row |
584 | (tree-path (%tree-selection-select-path selection row)) |
585 | (tree-iter (%tree-selection-select-iter selection row)))) |
586 | |
587 | (defun tree-selection-unselect (selection row) |
588 | (etypecase row |
589 | (tree-path (%tree-selection-unselect-path selection row)) |
590 | (tree-iter (%tree-selection-unselect-iter selection row)))) |
591 | |
592 | (defun tree-selection-is-selected-p (selection row) |
593 | (etypecase row |
594 | (tree-path (%tree-selection-path-is-selected selection row)) |
595 | (tree-iter (%tree-selection-iter-is-selected selection row)))) |
596 | |
597 | (defbinding tree-selection-select-all () nil |
598 | (tree-selection tree-selection)) |
599 | |
600 | (defbinding tree-selection-unselect-all () nil |
601 | (tree-selection tree-selection)) |
602 | |
603 | (defbinding tree-selection-select-range () nil |
604 | (tree-selection tree-selection) |
605 | (start tree-path) |
606 | (end tree-path)) |
607 | |
608 | (defbinding tree-selection-unselect-range () nil |
609 | (tree-selection tree-selection) |
610 | (start tree-path) |
611 | (end tree-path)) |
612 | |
613 | |
da82be16 |
614 | ;;; Tree Sortable |
615 | |
616 | (eval-when (:compile-toplevel :load-toplevel :execute) |
617 | (define-enum-type sort-column (:default -1) (:unsorted -2)) |
618 | (define-enum-type sort-order (:before -1) (:equal 0) (:after 1))) |
619 | |
620 | |
a92553bd |
621 | (define-callback-marshal %tree-iter-compare-callback (or int sort-order) |
622 | (tree-model (a tree-iter) (b tree-iter))) |
da82be16 |
623 | |
624 | (defbinding tree-sortable-sort-column-changed () nil |
625 | (sortable tree-sortable)) |
626 | |
627 | (defbinding %tree-sortable-get-sort-column-id () boolean |
628 | (sortable tree-sortable) |
629 | (column int :out) |
630 | (order sort-type :out)) |
631 | |
632 | (defun tree-sortable-get-sort-column (sortable) |
633 | (multiple-value-bind (special-p column order) |
634 | (%tree-sortable-get-sort-column-id sortable) |
635 | (values |
636 | (if special-p |
637 | (int-to-sort-order column) |
cc4896ef |
638 | (tree-model-column-name sortable column)) |
da82be16 |
639 | order))) |
640 | |
641 | (defbinding (tree-sortable-set-sort-column |
642 | "gtk_tree_sortable_set_sort_column_id") |
643 | (sortable column order) nil |
644 | (sortable tree-sortable) |
645 | ((etypecase column |
646 | ((or integer sort-column) column) |
eb0b609d |
647 | (symbol (tree-model-column-index sortable column))) |
da82be16 |
648 | (or sort-column int)) |
649 | (order sort-type)) |
650 | |
651 | (defbinding %tree-sortable-set-sort-func (sortable column function) nil |
652 | (sortable tree-sortable) |
eb0b609d |
653 | ((tree-model-column-index sortable column) int) |
a92553bd |
654 | (%tree-iter-compare-callback callback) |
da82be16 |
655 | ((register-callback-function function) unsigned-int) |
a92553bd |
656 | (user-data-destroy-callback callback)) |
da82be16 |
657 | |
658 | (defbinding %tree-sortable-set-default-sort-func () nil |
659 | (sortable tree-sortable) |
a92553bd |
660 | (compare-func (or null callback)) |
da82be16 |
661 | (callback-id unsigned-int) |
a92553bd |
662 | (destroy-func (or null callback))) |
da82be16 |
663 | |
664 | (defun tree-sortable-set-sort-func (sortable column function) |
665 | "Sets the comparison function used when sorting to be FUNCTION. If |
666 | the current sort column of SORTABLE is the same as COLUMN, |
667 | then the model will sort using this function." |
668 | (cond |
669 | ((and (eq column :default) (not function)) |
670 | (%tree-sortable-set-default-sort-func sortable nil 0 nil)) |
671 | ((eq column :default) |
672 | (%tree-sortable-set-default-sort-func sortable |
a92553bd |
673 | %tree-iter-compare-callback |
da82be16 |
674 | (register-callback-function function) |
a92553bd |
675 | user-data-destroy-callback)) |
da82be16 |
676 | ((%tree-sortable-set-sort-func sortable column function)))) |
677 | |
678 | (defbinding tree-sortable-has-default-sort-func-p () boolean |
679 | (sortable tree-sortable)) |
680 | |
05a3b9e4 |
681 | |
985713d7 |
682 | ;;; Tree Store |
683 | |
684 | (defbinding %tree-store-set-column-types () nil |
685 | (tree-store tree-store) |
4e169141 |
686 | ((length columns) unsigned-int) |
687 | (columns (vector gtype))) |
985713d7 |
688 | |
4e169141 |
689 | (defmethod initialize-instance ((tree-store tree-store) &key column-types |
690 | column-names) |
985713d7 |
691 | (call-next-method) |
4e169141 |
692 | (%tree-store-set-column-types tree-store column-types) |
693 | (when column-names |
1e5e3e14 |
694 | (setf (user-data tree-store 'column-names) column-names))) |
985713d7 |
695 | |
eb0b609d |
696 | |
697 | (defbinding %tree-store-set-value () nil |
698 | (tree-store tree-store) |
699 | (tree-iter tree-iter) |
700 | (column int) |
701 | (gvalue gvalue)) |
702 | |
703 | (defmethod (setf tree-model-value) (value (store tree-store) row column) |
704 | (let* ((index (tree-model-column-index store column)) |
705 | (type (tree-model-get-column-type store index))) |
706 | (with-gvalue (gvalue type value) |
707 | (%tree-store-set-value store (ensure-tree-iter store row) index gvalue))) |
708 | value) |
709 | |
985713d7 |
710 | |
711 | (defbinding tree-store-remove () boolean |
712 | (tree-store tree-store) |
713 | (tree-iter tree-iter)) |
714 | |
4e169141 |
715 | (defbinding %tree-store-insert () nil |
985713d7 |
716 | (tree-store tree-store) |
4e169141 |
717 | (tree-iter tree-iter) |
985713d7 |
718 | (parent (or null tree-iter)) |
719 | (position int)) |
720 | |
4e169141 |
721 | (defun tree-store-insert |
722 | (store parent position &optional data (iter (make-instance 'tree-iter))) |
723 | (%tree-store-insert store iter parent position) |
eb0b609d |
724 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
725 | iter) |
726 | |
727 | (defbinding %tree-store-insert-before () nil |
985713d7 |
728 | (tree-store tree-store) |
4e169141 |
729 | (tree-iter tree-iter) |
985713d7 |
730 | (parent (or null tree-iter)) |
731 | (sibling (or null tree-iter))) |
732 | |
3d36c5d6 |
733 | (defun tree-store-insert-before |
4e169141 |
734 | (store parent sibling &optional data (iter (make-instance 'tree-iter))) |
735 | (%tree-store-insert-before store iter parent sibling) |
eb0b609d |
736 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
737 | iter) |
738 | |
739 | (defbinding %tree-store-insert-after () nil |
985713d7 |
740 | (tree-store tree-store) |
4e169141 |
741 | (tree-iter tree-iter) |
985713d7 |
742 | (parent (or null tree-iter)) |
743 | (sibling (or null tree-iter))) |
744 | |
4e169141 |
745 | (defun tree-store-insert-after |
746 | (store parent sibling &optional data (iter (make-instance 'tree-iter))) |
747 | (%tree-store-insert-after store iter parent sibling) |
eb0b609d |
748 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
749 | iter) |
750 | |
751 | (defbinding %tree-store-prepend () nil |
985713d7 |
752 | (tree-store tree-store) |
4e169141 |
753 | (tree-iter tree-iter) |
985713d7 |
754 | (parent (or null tree-iter))) |
755 | |
4e169141 |
756 | (defun tree-store-prepend |
757 | (store parent &optional data (iter (make-instance 'tree-iter))) |
758 | (%tree-store-prepend store iter parent) |
eb0b609d |
759 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
760 | iter) |
761 | |
762 | (defbinding %tree-store-append () nil |
985713d7 |
763 | (tree-store tree-store) |
4e169141 |
764 | (tree-iter tree-iter) |
985713d7 |
765 | (parent (or null tree-iter))) |
766 | |
4e169141 |
767 | (defun tree-store-append |
768 | (store parent &optional data (iter (make-instance 'tree-iter))) |
769 | (%tree-store-append store iter parent) |
eb0b609d |
770 | (when data (setf (tree-model-row-data store iter) data)) |
4e169141 |
771 | iter) |
772 | |
985713d7 |
773 | (defbinding (tree-store-is-ancestor-p "gtk_tree_store_is_ancestor") () boolean |
774 | (tree-store tree-store) |
775 | (tree-iter tree-iter) |
776 | (descendant tree-iter)) |
777 | |
778 | (defbinding tree-store-iter-depth () int |
779 | (tree-store tree-store) |
780 | (tree-iter tree-iter)) |
781 | |
782 | (defbinding tree-store-clear () nil |
783 | (tree-store tree-store)) |
784 | |
785 | (defbinding tree-store-reorder () nil |
786 | (tree-store tree-store) |
787 | (parent tree-iter) |
788 | (new-order (vector int))) |
789 | |
790 | (defbinding tree-store-swap () nil |
791 | (tree-store tree-store) |
792 | (a tree-iter) |
793 | (b tree-iter)) |
794 | |
795 | (defbinding tree-store-move-before () nil |
796 | (tree-store tree-store) |
797 | (iter tree-iter) |
798 | (psoition (or null tree-iter))) |
799 | |
800 | |
801 | (defbinding tree-store-move-after () nil |
802 | (tree-store tree-store) |
803 | (iter tree-iter) |
804 | (psoition tree-iter)) |
805 | |
806 | |
807 | |
808 | ;;; Tree View |
809 | |
05a3b9e4 |
810 | (defmethod initialize-instance ((tree-view tree-view) &rest initargs |
811 | &key column) |
4d1fea77 |
812 | (declare (ignore column)) |
4e169141 |
813 | (call-next-method) |
814 | (mapc #'(lambda (column) |
815 | (tree-view-append-column tree-view column)) |
816 | (get-all initargs :column))) |
817 | |
818 | |
985713d7 |
819 | (defbinding tree-view-columns-autosize () nil |
820 | (tree-view tree-view)) |
821 | |
822 | (defbinding tree-view-append-column () int |
823 | (tree-view tree-view) |
824 | (tree-view-column tree-view-column)) |
825 | |
826 | (defbinding tree-view-remove-column () int |
827 | (tree-view tree-view) |
828 | (tree-view-column tree-view-column)) |
829 | |
3d36c5d6 |
830 | (defbinding tree-view-insert-column (view column position) int |
985713d7 |
831 | (view tree-view) |
832 | (column tree-view-column) |
833 | ((if (eq position :end) -1 position) int)) |
834 | |
835 | (defbinding tree-view-get-column () tree-view-column |
836 | (tree-view tree-view) |
837 | (position int)) |
838 | |
839 | (defbinding tree-view-move-column-after () nil |
840 | (tree-view tree-view) |
841 | (column tree-view-column) |
842 | (base-column (or null tree-view-column))) |
843 | |
844 | ;;(defbinding tree-view-set-column drag-function ...) |
845 | |
846 | (defbinding tree-view-scroll-to-point () nil |
847 | (tree-view tree-view) |
848 | (tree-x int) |
849 | (tree-y int)) |
850 | |
851 | (defbinding tree-view-scroll-to-cell () nil |
852 | (tree-view tree-view) |
853 | (path (or null tree-path)) |
854 | (column (or null tree-view-column)) |
855 | (use-align boolean) |
856 | (row-align single-float) |
857 | (col-align single-float)) |
858 | |
859 | (defbinding tree-view-set-cursor () nil |
860 | (tree-view tree-view) |
861 | (path tree-path) |
862 | (focus-column tree-view-column) |
863 | (start-editing boolean)) |
864 | |
865 | (defbinding tree-view-set-cursor-on-cell () nil |
866 | (tree-view tree-view) |
867 | (path tree-path) |
868 | (focus-column (or null tree-view-column)) |
869 | (focus-cell (or null cell-renderer)) |
870 | (start-editing boolean)) |
871 | |
872 | (defbinding tree-view-get-cursor () nil |
873 | (tree-view tree-view) |
874 | (path tree-path :out ) |
875 | (focus-column tree-view-column :out)) |
876 | |
877 | (defbinding tree-view-row-activated () nil |
878 | (tree-view tree-view) |
879 | (path tree-path ) |
880 | (column tree-view-column)) |
881 | |
882 | (defbinding tree-view-expand-all () nil |
883 | (tree-view tree-view)) |
884 | |
885 | (defbinding tree-view-collapse-all () nil |
886 | (tree-view tree-view)) |
887 | |
888 | (defbinding tree-view-expand-to-path () nil |
889 | (tree-view tree-view) |
890 | (path tree-path)) |
891 | |
892 | (defbinding tree-view-expand-row () nil |
893 | (tree-view tree-view) |
894 | (path tree-path) |
895 | (open-all boolean)) |
896 | |
897 | (defbinding tree-view-collapse-row () nil |
898 | (tree-view tree-view) |
899 | (path tree-path)) |
900 | |
a92553bd |
901 | (define-callback-marshal %tree-view-mapping-callback nil (tree-view tree-path)) |
985713d7 |
902 | |
a92553bd |
903 | (defbinding %tree-view-map-expanded-rows (tree-view callback-id) nil |
985713d7 |
904 | (tree-view tree-view) |
a92553bd |
905 | (%tree-view-mapping-callback callback) |
985713d7 |
906 | (callback-id unsigned-int)) |
907 | |
908 | (defun map-expanded-rows (function tree-view) |
909 | (with-callback-function (id function) |
910 | (%tree-view-map-expanded-rows tree-view id))) |
911 | |
912 | (defbinding (tree-view-row-expanded-p "gtk_tree_view_row_expanded") () boolean |
913 | (tree-view tree-view) |
914 | (path tree-path)) |
915 | |
916 | (defbinding tree-view-get-path-at-pos |
917 | (tree-view x y &optional (cell-x 0) (cell-y 0)) boolean |
918 | (tree-view tree-view) |
919 | (x int) |
920 | (y int) |
921 | (path tree-path :out) |
922 | (column tree-view-column :out) |
923 | (cell-x int) |
924 | (cell-y int)) |
925 | |
926 | (defbinding tree-view-get-cell-area () nil |
927 | (tree-view tree-view) |
928 | (path (or null tree-path)) |
929 | (column (or null tree-view-column)) |
1e5e3e14 |
930 | ((make-instance 'gdk:rectangle) gdk:rectangle :in/return)) |
985713d7 |
931 | |
932 | (defbinding tree-view-get-background-area () nil |
933 | (tree-view tree-view) |
934 | (path (or null tree-path)) |
935 | (column (or null tree-view-column)) |
1e5e3e14 |
936 | ((make-instance 'gdk:rectangle) gdk:rectangle :in/return)) |
985713d7 |
937 | |
938 | (defbinding tree-view-get-visible-rect () nil |
939 | (tree-view tree-view) |
1e5e3e14 |
940 | ((make-instance 'gdk:rectangle) gdk:rectangle :in/return)) |
985713d7 |
941 | |
942 | ;; and many more functions which we'll add later |
943 | |
4e169141 |
944 | |
da82be16 |
945 | ;;;; Icon View |
946 | |
1e5e3e14 |
947 | #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.6.0") |
da82be16 |
948 | (progn |
949 | (defbinding icon-view-get-path-at-pos () tree-path |
950 | (icon-view icon-view) |
951 | (x int) (y int)) |
4e169141 |
952 | |
a92553bd |
953 | (define-callback-marshal %icon-view-foreach-callback nil (icon-view tree-path)) |
da82be16 |
954 | |
a92553bd |
955 | (defbinding %icon-view-selected-foreach (icon-view callback-id) tree-path |
da82be16 |
956 | (icon-view icon-view) |
a92553bd |
957 | (%icon-view-foreach-callback callback) |
da82be16 |
958 | (callback-id unsigned-int)) |
959 | |
960 | (defun icon-view-foreach (icon-view function) |
961 | (with-callback-function (id function) |
962 | (%icon-view-selected-foreach icon-view id))) |
963 | |
964 | (defbinding icon-view-select-path () nil |
965 | (icon-view icon-view) |
966 | (path tree-path)) |
967 | |
968 | (defbinding icon-view-unselect-path () nil |
969 | (icon-view icon-view) |
970 | (path tree-path)) |
971 | |
972 | (defbinding icon-view-path-is-selected-p () boolean |
973 | (icon-view icon-view) |
974 | (path tree-path)) |
975 | |
976 | (defbinding icon-view-get-selected-items () (glist tree-path) |
977 | (icon-view icon-view)) |
978 | |
979 | (defbinding icon-view-select-all () nil |
980 | (icon-view icon-view)) |
981 | |
982 | (defbinding icon-view-unselect-all () nil |
983 | (icon-view icon-view)) |
984 | |
985 | (defbinding icon-view-item-activated () nil |
986 | (icon-view icon-view) |
987 | (path tree-path)) |
988 | |
989 | (defbinding %icon-view-set-text-column (column icon-view) nil |
990 | (icon-view icon-view) |
991 | ((if (integerp column) |
992 | column |
eb0b609d |
993 | (tree-model-column-index (icon-view-model icon-view) column)) int)) |
da82be16 |
994 | |
880f23cb |
995 | (defbinding %%icon-view-get-text-column () int |
996 | (icon-view icon-view)) |
997 | |
998 | (defun %icon-view-get-text-column (icon-view) |
eb0b609d |
999 | (tree-model-column-index |
880f23cb |
1000 | (icon-view-model icon-view) |
1001 | (%%icon-view-get-text-column icon-view))) |
1002 | |
1003 | (defun %icon-view-text-column-boundp (icon-view) |
1004 | (not (eql (%%icon-view-get-text-column icon-view) -1))) |
1005 | |
1006 | |
da82be16 |
1007 | (defbinding %icon-view-set-markup-column (column icon-view) nil |
1008 | (icon-view icon-view) |
1009 | ((if (integerp column) |
1010 | column |
eb0b609d |
1011 | (tree-model-column-index (icon-view-model icon-view) column)) int)) |
da82be16 |
1012 | |
880f23cb |
1013 | (defbinding %%icon-view-get-markup-column () int |
1014 | (icon-view icon-view)) |
1015 | |
1016 | (defun %icon-view-get-markup-column (icon-view) |
eb0b609d |
1017 | (tree-model-column-index |
880f23cb |
1018 | (icon-view-model icon-view) |
1019 | (%%icon-view-get-markup-column icon-view))) |
1020 | |
1021 | (defun %icon-view-markup-column-boundp (icon-view) |
1022 | (not (eql (%%icon-view-get-markup-column icon-view) -1))) |
1023 | |
1024 | |
da82be16 |
1025 | (defbinding %icon-view-set-pixbuf-column (column icon-view) nil |
1026 | (icon-view icon-view) |
1027 | ((if (integerp column) |
1028 | column |
eb0b609d |
1029 | (tree-model-column-index (icon-view-model icon-view) column)) int))) |
92ba85d4 |
1030 | |
880f23cb |
1031 | (defbinding %%icon-view-get-pixbuf-column () int |
1032 | (icon-view icon-view)) |
1033 | |
1034 | (defun %icon-view-get-pixbuf-column (icon-view) |
eb0b609d |
1035 | (tree-model-column-index |
880f23cb |
1036 | (icon-view-model icon-view) |
1037 | (%%icon-view-get-pixbuf-column icon-view))) |
1038 | |
1039 | (defun %icon-view-pixbuf-column-boundp (icon-view) |
1040 | (not (eql (%%icon-view-get-pixbuf-column icon-view) -1))) |
1041 | |
1042 | |
1e5e3e14 |
1043 | #?(pkg-exists-p "gtk+-2.0" :atleast-version "2.8.0") |
92ba85d4 |
1044 | (progn |
1045 | (defbinding icon-view-get-item-at-pos () boolean |
1046 | (icon-view icon-view) |
1047 | (x int) |
1048 | (y int) |
1049 | (tree-path tree-path :out) |
1050 | (cell cell-renderer :out)) |
1051 | |
1052 | (defbinding icon-view-set-cursor (icon-view path &key cell start-editing) nil |
1053 | (icon-view icon-view) |
1054 | (path tree-path) |
1055 | (cell (or null cell-renderer)) |
1056 | (start-editing boolean)) |
1057 | |
1058 | (defbinding icon-view-get-cursor () boolean |
1059 | (icon-view icon-view) |
1060 | (path tree-path :out) |
1061 | (cell cell-renderer :out)) |
1062 | |
1063 | (defbinding icon-view-get-dest-item-at-pos () boolean |
1064 | (icon-view icon-view) |
1065 | (drag-x int) |
1066 | (drag-y int) |
1067 | (tree-path tree-path :out) |
1068 | (pos drop-position :out)) |
1069 | |
1070 | (defbinding icon-view-create-drag-icon () gdk:pixmap |
1071 | (icon-view icon-view) |
1072 | (tree-path tree-path)) |
1073 | |
1074 | (defbinding icon-view-scroll-to-path (icon-view tree-path &key row-align column-align) nil |
1075 | (icon-view icon-view) |
1076 | (tree-path tree-path) |
1077 | ((or row-align column-align) boolean) |
1078 | (row-align single-float) |
1079 | (column-align single-float)) |
1080 | |
1081 | (defbinding icon-view-get-visible-range () boolean |
1082 | (icon-view icon-view) |
1083 | (start-path tree-path :out) |
1084 | (end-path tree-path :out)) |
1085 | |
1086 | ;; (defbinding icon-view-enable-model-drag-source () nil |
1087 | ;; (icon-view icon-view) |
1088 | ;; (start-button-mask gdk:modifier-type) |
1089 | ;; (targets (vector target-entry)) |
1090 | ;; ((length targets) unsigned-int) |
1091 | ;; (actions gdk:drag-action)) |
1092 | |
1093 | ;; (defbinding icon-view-enable-model-drag-dest () nil |
1094 | ;; (icon-view icon-view) |
1095 | ;; (targets (vector target-entry)) |
1096 | ;; ((length targets) unsigned-int) |
1097 | ;; (actions gdk:drag-action)) |
1098 | |
1099 | (defbinding icon-view-unset-model-drag-source () nil |
1100 | (icon-view icon-view)) |
1101 | |
1102 | (defbinding icon-view-unset-model-drag-dest () nil |
1103 | (icon-view icon-view))) |