Typo.
[cl-gtk2.git] / gtk / gtk.tree-store.lisp
1 (in-package :gtk)
2
3 (defcfun gtk-tree-store-set-column-types :void
4   (tree-store (g-object tree-store))
5   (n-columns :int)
6   (types :pointer))
7
8 (defun call-tree-store-set-column-types (tree-store column-types)
9   (let ((n (length column-types)))
10     (with-foreign-object (types-ar 'g-type-designator n)
11       (iter (for i from 0 below n)
12             (for type in column-types)
13             (setf (mem-aref types-ar 'g-type-designator i) type))
14       (gtk-tree-store-set-column-types tree-store n types-ar))))
15
16 (defmethod initialize-instance :after ((store tree-store) &rest initargs &key (column-types nil column-types-supplied-p) &allow-other-keys)
17   (declare (ignore initargs))
18   (when column-types-supplied-p
19     (call-tree-store-set-column-types store column-types)))
20
21 (defcfun (%gtk-tree-store-set-value "gtk_tree_store_set_value") :void
22   (tree-store (g-object tree-store))
23   (iter (g-boxed-foreign tree-iter))
24   (column :int)
25   (value :pointer))
26
27 (defun gtk-tree-store-set-value (tree-store iter column value)
28   (with-foreign-object (v 'g-value)
29     (set-g-value v value (tree-model-column-type tree-store column) :zero-g-value t)
30     (%gtk-tree-store-set-value tree-store iter column v)
31     (g-value-unset v)
32     (values)))
33
34 (defun tree-store-value (tree-store iter column)
35   (tree-model-value tree-store iter column))
36
37 (defun (setf tree-store-value) (new-value tree-store iter column)
38   (gtk-tree-store-set-value tree-store iter column new-value)
39   new-value)
40
41 (export 'tree-store-value)
42
43 ;; not implemented
44 ;; void                gtk_tree_store_set_valuesv          (GtkTreeStore *tree_store,
45 ;;                                                          GtkTreeIter *iter,
46 ;;                                                          gint *columns,
47 ;;                                                          GValue *values,
48 ;;                                                          gint n_values);
49
50 (defcfun (tree-store-remove "gtk_tree_store_remove") :boolean
51   (tree-store (g-object tree-store))
52   (iter (g-boxed-foreign tree-iter)))
53
54 (export 'tree-store-remove)
55
56 (defcfun gtk-tree-store-insert :void
57   (tree-store (g-object tree-store))
58   (iter (g-boxed-foreign tree-iter))
59   (parent (g-boxed-foreign tree-iter))
60   (position :int))
61
62 (defun tree-store-insert (tree-store parent position)
63   (let ((iter (make-tree-iter)))
64     (gtk-tree-store-insert tree-store iter parent position)
65     iter))
66
67 (defcfun gtk-tree-store-insert-before :void
68   (tree-store (g-object tree-store))
69   (iter (g-boxed-foreign tree-iter))
70   (parent (g-boxed-foreign tree-iter))
71   (sibling (g-boxed-foreign tree-iter)))
72
73 (defun tree-store-insert-before (tree-store parent sibling)
74   (let ((iter (make-tree-iter)))
75     (gtk-tree-store-insert-before tree-store iter parent sibling)
76     iter))
77
78 (defcfun gtk-tree-store-insert-after :void
79   (tree-store (g-object tree-store))
80   (iter (g-boxed-foreign tree-iter))
81   (parent (g-boxed-foreign tree-iter))
82   (sibling (g-boxed-foreign tree-iter)))
83
84 (defun tree-store-insert-after (tree-store parent sibling)
85   (let ((iter (make-tree-iter)))
86     (gtk-tree-store-insert-after tree-store iter parent sibling)
87     iter))
88
89 (export '(tree-store-insert tree-store-insert-before tree-store-insert-after))
90
91 (defcfun gtk-tree-store-insert-with-valuesv :void
92   (tree-store (g-object tree-store))
93   (iter (g-boxed-foreign tree-iter))
94   (parent (g-boxed-foreign tree-iter))
95   (position :int)
96   (columns :pointer)
97   (values :pointer)
98   (n-values :int))
99
100 (defun tree-store-insert-with-values (tree-store parent position &rest values)
101   (let ((n (length values))
102         (iter (make-tree-iter)))
103     (with-foreign-objects ((v-ar 'g-value n)
104                            (columns-ar :int n))
105       (iter (for i from 0 below n)
106             (for value in values)
107             (for type = (tree-model-column-type tree-store i))
108             (setf (mem-aref columns-ar :int i) i)
109             (set-g-value (mem-aref v-ar 'g-value i) value type :zero-g-value t))
110       (gtk-tree-store-insert-with-valuesv tree-store iter parent position columns-ar v-ar n)
111       (iter (for i from 0 below n)
112             (g-value-unset (mem-aref v-ar 'g-value i)))
113       iter)))
114
115 (export 'tree-store-insert-with-values)
116
117 (defcfun gtk-tree-store-prepend :void
118   (tree-store (g-object tree-store))
119   (iter (g-boxed-foreign tree-iter))
120   (parent (g-boxed-foreign tree-iter)))
121
122 (defun tree-store-prepend (tree-store parent)
123   (let ((iter (make-tree-iter)))
124     (gtk-tree-store-prepend tree-store iter parent)
125     iter))
126
127 (defcfun gtk-tree-store-append :void
128   (tree-store (g-object tree-store))
129   (iter (g-boxed-foreign tree-iter))
130   (parent (g-boxed-foreign tree-iter)))
131
132 (defun tree-store-append (tree-store parent)
133   (let ((iter (make-tree-iter)))
134     (gtk-tree-store-append tree-store iter parent)
135     iter))
136
137 (export '(tree-store-prepend tree-store-append))
138
139 (defcfun (tree-store-is-ancestor "gtk_tree_store_is_ancestor") :boolean
140   (tree-store (g-object tree-store))
141   (iter (g-boxed-foreign tree-iter))
142   (descendant (g-boxed-foreign tree-iter)))
143
144 (export 'tree-store-is-ancestor)
145
146 (defcfun (tree-store-iter-depth "gtk_tree_store_iter_depth") :int
147   (tree-store (g-object tree-store))
148   (tree-iter (g-boxed-foreign tree-iter)))
149
150 (export 'tree-store-iter-depth)
151
152 (defcfun (tree-store-clear "gtk_tree_store_clear") :void
153   (tree-store (g-object tree-store)))
154
155 (export 'tree-store-clear)
156
157 (defcfun (tree-store-iter-is-valid "gtk_tree_store_iter_is_valid") :boolean
158   (tree-store (g-object tree-store))
159   (iter (g-boxed-foreign tree-iter)))
160
161 (export 'tree-store-iter-is-valid)
162
163 ;; not implemented
164 ;; void                gtk_tree_store_reorder              (GtkTreeStore *tree_store,
165 ;;                                                          GtkTreeIter *parent,
166 ;;                                                          gint *new_order);
167
168
169 (defcfun (tree-store-swap "gtk_tree_store_swap") :void
170   (tree-store (g-object tree-store))
171   (a (g-boxed-foreign tree-iter))
172   (b (g-boxed-foreign tree-iter)))
173
174 (export 'tree-store-swap)
175
176 (defcfun (tree-store-move-before "gtk_tree_store_move_before") :void
177   (tree-store (g-object tree-store))
178   (iter (g-boxed-foreign tree-iter))
179   (position (g-boxed-foreign tree-iter)))
180
181 (export 'tree-store-move-before)
182
183 (defcfun (tree-store-move-after "gtk_tree_store_move_after") :void
184   (tree-store (g-object tree-store))
185   (iter (g-boxed-foreign tree-iter))
186   (position (g-boxed-foreign tree-iter)))
187
188 (export 'tree-store-move-after)