e4f352148b9055760274725765ae6cd22fc9cb64
[cl-gtk2.git] / gtk / gtk.objects.lisp
1 (in-package :gtk)
2
3 (define-g-boxed-class "GtkBorder" border ()
4   (left :int :initform 0)
5   (right :int :initform 0)
6   (top :int :initform 0)
7   (bottom :int :initform 0))
8
9 (defcstruct tree-iter
10   (stamp :int)
11   (user-data :pointer)
12   (user-data-2 :pointer)
13   (user-data-3 :pointer))
14
15 (defun tree-iter-get-stamp (i) (foreign-slot-value (pointer i) 'tree-iter 'stamp))
16 (defun tree-iter-set-stamp (value i) (setf (foreign-slot-value (pointer i) 'tree-iter 'stamp) value))
17 (defun tree-iter-get-user-data (i) (pointer-address (foreign-slot-value (pointer i) 'tree-iter 'user-data)))
18 (defun tree-iter-set-user-data (value i) (setf (foreign-slot-value (pointer i) 'tree-iter 'user-data) (make-pointer value)))
19
20 (defun tree-iter-alloc () (glib:g-malloc (foreign-type-size 'tree-iter)))
21 (defun tree-iter-free (v) (glib:g-free v))
22
23 (define-g-boxed-ref "GtkTreeIter" tree-iter
24   (:slots (stamp :reader tree-iter-get-stamp :writer tree-iter-set-stamp :accessor tree-iter-stamp)
25           (user-data :reader tree-iter-get-user-data :writer tree-iter-set-user-data :accessor tree-iter-user-data))
26   (:alloc-function tree-iter-alloc)
27   (:free-function tree-iter-free))
28
29 (export 'tree-iter)
30 (export 'tree-iter-stamp)
31 (export 'tree-iter-user-data)
32
33 (defctype tree-path :pointer)
34 (defcfun (%gtk-tree-path-get-depth "gtk_tree_path_get_depth") :int
35   (path tree-path))
36
37 (defcfun (%gtk-tree-path-get-indices "gtk_tree_path_get_indices") (:pointer :int)
38   (path tree-path))
39
40 (defcfun (%gtk-tree-path-new "gtk_tree_path_new") :pointer)
41
42 (defcfun (%gtk-tree-path-append-index "gtk_tree_path_append_index") :void
43   (path :pointer)
44   (index :int))
45
46 (defun tree-path-get-indices (path)
47   (setf path (pointer path))
48   (let ((n (%gtk-tree-path-get-depth path))
49         (indices (%gtk-tree-path-get-indices path)))
50     (loop
51        for i from 0 below n
52        collect (mem-aref indices :int i))))
53
54 (defun tree-path-set-indices (indices path)
55   (setf path (pointer path))
56   (loop 
57      repeat (%gtk-tree-path-get-depth path)
58      do (foreign-funcall "gtk_tree_path_up" :pointer path :boolean))
59   (loop
60      for index in indices
61      do(foreign-funcall "gtk_tree_path_append_index" :pointer path :int index :void)))
62
63 (defcfun gtk-tree-path-new :pointer)
64 (defcfun gtk-tree-path-free :void (path :pointer))
65
66 (define-g-boxed-ref "GtkTreePath" tree-path
67   (:alloc-function gtk-tree-path-new)
68   (:free-function gtk-tree-path-free)
69   (:slots (indices :reader tree-path-get-indices :writer tree-path-set-indices :accessor tree-path-indices)))
70
71 (export 'tree-path)
72 (export 'tree-path-indices)