chiark / gitweb /
Initial bindings for tree and list widgets
[clg] / gtk / gtktree.lisp
1 ;; Common Lisp bindings for GTK+ v2.0
2 ;; Copyright (C) 1999-2001 Espen S. Johnsen <esj@stud.cs.uit.no>
3 ;;
4 ;; This library is free software; you can redistribute it and/or
5 ;; modify it under the terms of the GNU Lesser General Public
6 ;; License as published by the Free Software Foundation; either
7 ;; version 2 of the License, or (at your option) any later version.
8 ;;
9 ;; This library is distributed in the hope that it will be useful,
10 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
11 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 ;; Lesser General Public License for more details.
13 ;;
14 ;; You should have received a copy of the GNU Lesser General Public
15 ;; License along with this library; if not, write to the Free Software
16 ;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18 ;; $Id: gtktree.lisp,v 1.1 2004-11-07 17:22:06 espen Exp $
19
20
21 (in-package "GTK")
22
23
24 ;;;; Cell Layout
25
26 (defbinding cell-layout-pack-start () nil
27   (cell-layout cell-layout)
28   (cell cell-renderer)
29   (expand boolean))
30
31 (defbinding cell-layout-pack-end () nil
32   (cell-layout cell-layout)
33   (cell cell-renderer)
34   (expand boolean))
35
36 (defun cell-layout-pack (layout cell &key end expand)
37   (if end
38       (cell-layout-pack-end layout cell expand)
39     (cell-layout-pack-start layout cell expand)))
40
41 (defbinding cell-layout-reorder () nil
42   (cell-layout cell-layout)
43   (cell cell-renderer)
44   (position int))
45
46 (defbinding cell-layout-clear () nil
47   (cell-layout cell-layout))
48
49 (defbinding cell-layout-add-attribute (cell-layout cell attribute column) nil
50   (cell-layout cell-layout)
51   (cell cell-renderer)
52   ((string-downcase attribute) string)
53   (column int))
54
55 (def-callback-marshal %cell-layout-data-func 
56     (nil cell-layout cell-renderer tree-model tree-iter))
57
58 (defbinding cell-layout-set-cell-data-func (cell-layout cell function) nil
59   (cell-layout cell-layout)
60   (cell cell-renderer)
61   ((callback %cell-layout-data-func) pointer)
62   ((register-callback-function function) unsigned-int)
63   ((callback %destroy-user-data) pointer))
64
65 (defbinding cell-layout-clear-attributes () nil
66   (cell-layout cell-layout)
67   (cell cell-renderer))
68
69
70
71 ;;;; List Store
72
73 (defmethod initialize-instance ((list-store list-store) &key columns)
74   (call-next-method)
75   (%list-store-set-column-types list-store (length columns)
76    (map 'vector #'find-type-number columns)))
77
78
79 (defbinding %list-store-set-column-types () nil
80   (list-store list-store)
81   (n-columns unsigned-int)
82   (columns (vector type-number)))
83
84 (defbinding %list-store-set-value () nil
85   (list-store list-store)
86   (tree-iter tree-iter)
87   (column int)
88   (value gvalue))
89
90 (defun list-store-set-value (list-store tree-iter column type value)
91   (let ((gvalue (gvalue-new type value)))
92     (unwind-protect
93          (%list-store-set-value list-store tree-iter column gvalue)
94       (gvalue-free gvalue))))
95
96 (defbinding list-store-remove () boolean
97   (list-store list-store)
98   (tree-iter tree-iter))
99
100 (defbinding list-store-insert () nil
101   (list-store list-store)
102   ((make-instance 'tree-iter) tree-iter :in-out)
103   (position int))
104
105 (defbinding list-store-insert-before (list-store &optional sibling) nil
106   (list-store list-store)
107   ((make-instance 'tree-iter) tree-iter :in-out)
108   (sibling (or null tree-iter)))
109
110 (defbinding list-store-insert-after (list-store &optional sibling) nil
111   (list-store list-store)
112   ((make-instance 'tree-iter) tree-iter :in-out)
113   (sibling (or null tree-iter)))
114
115 (defbinding list-store-prepend () nil
116   (list-store list-store)
117   ((make-instance 'tree-iter) tree-iter :in-out))
118
119 (defbinding list-store-append () nil
120   (list-store list-store)
121   ((make-instance 'tree-iter) tree-iter :in-out))
122
123 (defbinding list-store-clear () nil
124   (list-store list-store))
125
126 (defbinding list-store-reorder () nil
127   (list-store list-store)
128   (new-order (vector int)))
129
130 (defbinding list-store-swap () nil
131   (list-store list-store)
132   (a tree-iter)
133   (b tree-iter))
134
135 (defbinding list-store-move-before () nil
136   (list-store list-store)
137   (iter tree-iter)
138   (psoition (or null tree-iter)))
139
140
141 (defbinding list-store-move-after () nil
142   (list-store list-store)
143   (iter tree-iter)
144   (psoition tree-iter))
145
146
147 ;;; Tree Model
148
149
150
151 ;;; Tree Store
152
153 (defbinding %tree-store-set-column-types () nil
154   (tree-store tree-store)
155   (n-columns unsigned-int)
156   (columns (vector type-number)))
157
158 (defmethod initialize-instance ((tree-store tree-store) &key columns)
159   (call-next-method)
160   (%tree-store-set-column-types tree-store (length columns)
161    (map 'vector #'find-type-number columns)))
162
163
164 (defbinding %tree-store-set-value () nil
165   (tree-store tree-store)
166   (tree-iter tree-iter)
167   (column int)
168   (value gvalue))
169
170 (defbinding tree-store-remove () boolean
171   (tree-store tree-store)
172   (tree-iter tree-iter))
173
174 (defbinding tree-store-insert (tree-store position &optional parent) nil
175   (tree-store tree-store)
176   ((make-instance 'tree-iter) tree-iter :in-out)
177   (parent (or null tree-iter))
178   (position int))
179
180 (defbinding tree-store-insert-before (tree-store &optional parent sibling) nil
181   (tree-store tree-store)
182   ((make-instance 'tree-iter) tree-iter :in-out)
183   (parent (or null tree-iter))
184   (sibling (or null tree-iter)))
185
186 (defbinding tree-store-insert-after (tree-store &optional parent sibling) nil
187   (tree-store tree-store)
188   ((make-instance 'tree-iter) tree-iter :in-out)
189   (parent (or null tree-iter))
190   (sibling (or null tree-iter)))
191
192 (defbinding tree-store-prepend (tree-store &optional parent) nil
193   (tree-store tree-store)
194   ((make-instance 'tree-iter) tree-iter :in-out)
195   (parent (or null tree-iter)))
196
197 (defbinding tree-store-append (tree-store &optional parent) nil
198   (tree-store tree-store)
199   ((make-instance 'tree-iter) tree-iter :in-out)
200   (parent (or null tree-iter)))
201
202 (defbinding (tree-store-is-ancestor-p "gtk_tree_store_is_ancestor") () boolean
203   (tree-store tree-store)
204   (tree-iter tree-iter)
205   (descendant tree-iter))
206
207 (defbinding tree-store-iter-depth () int
208   (tree-store tree-store)
209   (tree-iter tree-iter))
210
211 (defbinding tree-store-clear () nil
212   (tree-store tree-store))
213
214 (defbinding tree-store-reorder () nil
215   (tree-store tree-store)
216   (parent tree-iter)
217   (new-order (vector int)))
218
219 (defbinding tree-store-swap () nil
220   (tree-store tree-store)
221   (a tree-iter)
222   (b tree-iter))
223
224 (defbinding tree-store-move-before () nil
225   (tree-store tree-store)
226   (iter tree-iter)
227   (psoition (or null tree-iter)))
228
229
230 (defbinding tree-store-move-after () nil
231   (tree-store tree-store)
232   (iter tree-iter)
233   (psoition tree-iter))
234
235
236
237 ;;; Tree View
238
239 (defbinding tree-view-get-selection () tree-selection
240   (tree-view tree-view))
241
242 (defbinding tree-view-columns-autosize () nil
243   (tree-view tree-view))
244
245 (defbinding tree-view-append-column () int
246   (tree-view tree-view)
247   (tree-view-column tree-view-column))
248
249 (defbinding tree-view-remove-column () int
250   (tree-view tree-view)
251   (tree-view-column tree-view-column))
252
253 (defbinding tree-view-insert-column (view columnd position) int
254   (view tree-view)
255   (column tree-view-column)
256   ((if (eq position :end) -1 position) int))
257
258 (defbinding tree-view-get-column () tree-view-column
259   (tree-view tree-view)
260   (position int))
261
262 (defbinding tree-view-move-column-after () nil
263   (tree-view tree-view)
264   (column tree-view-column)
265   (base-column (or null tree-view-column)))
266
267 ;;(defbinding tree-view-set-column drag-function ...)
268
269 (defbinding tree-view-scroll-to-point () nil
270   (tree-view tree-view)
271   (tree-x int)
272   (tree-y int))
273
274 (defbinding tree-view-scroll-to-cell () nil
275   (tree-view tree-view)
276   (path (or null tree-path))
277   (column (or null tree-view-column))
278   (use-align boolean)
279   (row-align single-float)
280   (col-align single-float))
281
282 (defbinding tree-view-set-cursor () nil
283   (tree-view tree-view)
284   (path tree-path)
285   (focus-column tree-view-column)
286   (start-editing boolean))
287
288 (defbinding tree-view-set-cursor-on-cell () nil
289   (tree-view tree-view)
290   (path tree-path)
291   (focus-column (or null tree-view-column))
292   (focus-cell (or null cell-renderer))
293   (start-editing boolean))
294
295 (defbinding tree-view-get-cursor () nil
296   (tree-view tree-view)
297   (path tree-path :out )
298   (focus-column tree-view-column :out))
299
300 (defbinding tree-view-row-activated () nil
301   (tree-view tree-view)
302   (path tree-path )
303   (column tree-view-column))
304
305 (defbinding tree-view-expand-all () nil
306   (tree-view tree-view))
307
308 (defbinding tree-view-collapse-all () nil
309   (tree-view tree-view))
310
311 (defbinding tree-view-expand-to-path () nil
312   (tree-view tree-view)
313   (path tree-path))
314
315 (defbinding tree-view-expand-row () nil
316   (tree-view tree-view)
317   (path tree-path)
318   (open-all boolean))
319
320 (defbinding tree-view-collapse-row () nil
321   (tree-view tree-view)
322   (path tree-path))
323
324 (def-callback-marshal %tree-view-mapping-func (nil tree-view tree-path))
325
326 (defbinding %tree-view-map-expanded-rows () nil
327   (tree-view tree-view)
328   ((callback %tree-view-mapping-func) pointer)
329   (callback-id unsigned-int))
330
331 (defun map-expanded-rows (function tree-view)
332   (with-callback-function (id function)
333     (%tree-view-map-expanded-rows tree-view id)))
334
335 (defbinding (tree-view-row-expanded-p "gtk_tree_view_row_expanded") () boolean
336   (tree-view tree-view)
337   (path tree-path))
338
339 (defbinding tree-view-get-path-at-pos 
340     (tree-view x y &optional (cell-x 0) (cell-y 0)) boolean
341   (tree-view tree-view)
342   (x int)
343   (y int)
344   (path tree-path :out)
345   (column tree-view-column :out)
346   (cell-x int)
347   (cell-y int))
348
349 (defbinding tree-view-get-cell-area () nil
350   (tree-view tree-view)
351   (path (or null tree-path))
352   (column (or null tree-view-column))
353   ((make-instance 'gdk:rectangle) gdk:rectangle :in-out))
354
355 (defbinding tree-view-get-background-area () nil
356   (tree-view tree-view)
357   (path (or null tree-path))
358   (column (or null tree-view-column))
359   ((make-instance 'gdk:rectangle) gdk:rectangle :in-out))
360
361 (defbinding tree-view-get-visible-rect () nil
362   (tree-view tree-view)
363   ((make-instance 'gdk:rectangle) gdk:rectangle :in-out))
364
365 ;; and many more functions which we'll add later
366