Merge remote-tracking branch 'andy128k/master'
[cl-gtk2.git] / gtk / gtk.icon-view.lisp
1 (in-package :gtk)
2
3 (defcfun (icon-view-get-path-at-pos "gtk_icon_view_get_path_at_pos") (g-boxed-foreign tree-path :return)
4   (icon-view g-object)
5   (x :int)
6   (y :int))
7
8 (export 'icon-view-get-path-at-pos)
9
10 (defcfun gtk-icon-view-get-item-at-pos :boolean
11   (icon-view g-object)
12   (x :int)
13   (y :int)
14   (path :pointer)
15   (cell :pointer))
16
17 (defun icon-view-get-item-at-pos (icon-view x y)
18   (with-foreign-objects ((path :pointer) (cell :pointer))
19     (when (gtk-icon-view-get-item-at-pos icon-view x y path cell)
20       (values (mem-ref path '(g-boxed-foreign tree-path :return))
21               (mem-ref cell 'g-object)))))
22
23 (export 'icon-view-get-item-at-pos)
24
25 (defcfun gtk-icon-view-convert-widget-to-bin-window-coords :void
26   (icon-view g-object)
27   (x :int)
28   (y :int)
29   (rx :pointer)
30   (ry :pointer))
31
32 (defun icon-view-convert-widget-to-bin-window-coords (icon-view x y)
33   (with-foreign-objects ((rx :int) (ry :int))
34     (gtk-icon-view-convert-widget-to-bin-window-coords icon-view x y rx ry)
35     (values (mem-ref rx :int)
36             (mem-ref ry :int))))
37
38 (export 'icon-view-conver-widget-to-bin-window-coords)
39
40 (defcfun (icon-view-set-cursor "gtk_icon_view_set_cursor") :void
41   (icon-view g-object)
42   (path (g-boxed-foreign tree-path))
43   (cell g-object)
44   (start-editing :boolean))
45
46 (export 'icon-view-set-cursor)
47
48 (defcfun gtk-icon-view-get-cursor :boolean
49   (icon-view g-object)
50   (path :pointer)
51   (cell :pointer))
52
53 (defun icon-view-get-cursor (icon-view)
54   (with-foreign-objects ((path :pointer) (cell :pointer))
55     (when (gtk-icon-view-get-cursor icon-view path cell)
56       (values (mem-ref path '(g-boxed-foreign tree-path :return))
57               (mem-ref cell 'g-object)))))
58
59 (export 'icon-view-get-cursor)
60
61 (defcallback gtk-icon-view-foreach-func-callback :void
62     ((icon-view g-object) (path (g-boxed-foreign tree-path)) (data :pointer))
63   (restart-case
64       (funcall (get-stable-pointer-value data)
65                icon-view
66                path)
67     (return () nil)))
68
69 (defcfun gtk-icon-view-selected-foreach :void
70   (icon-view g-object)
71   (func :pointer)
72   (data :pointer))
73
74 (defun map-icon-view-selected (icon-view func)
75   (with-stable-pointer (ptr func)
76     (gtk-icon-view-selected-foreach icon-view
77                                     (callback gtk-icon-view-foreach-func-callback)
78                                     ptr)))
79
80 (export 'map-icon-view-selected)
81
82 (defcfun (icon-view-select-path "gtk_icon_view_select_path") :void
83   (icon-view g-object)
84   (path (g-boxed-foreign tree-path)))
85
86 (export 'icon-view-select-path)
87
88 (defcfun (icon-view-unselect-path "gtk_icon_view_unselect_path") :void
89   (icon-view g-object)
90   (path (g-boxed-foreign tree-path)))
91
92 (export 'icon-view-unselect-path)
93
94 (defcfun (icon-view-path-selected-p "gtk_icon_view_path_is_selected") :boolean
95   (icon-view g-object)
96   (path (g-boxed-foreign tree-path)))
97
98 (export 'icon-view-path-selected-p)
99
100 (defcfun (icon-view-selected-items "gtk_icon_view_get_selected_items") (glist (g-boxed-foreign tree-path) :free-from-foreign t)
101   (icon-view g-object))
102
103 (export 'icon-view-selected-items)
104
105 (defcfun (icon-view-select-all "gtk_icon_view_select_all") :void
106   (icon-view g-object))
107
108 (export 'icon-view-select-all)
109
110 (defcfun (icon-view-unselect-all "gtk_icon_view_unselect_all") :void
111   (icon-view g-object))
112
113 (export 'icon-view-unselect-all)
114
115 (defcfun gtk-icon-view-scroll-to-path :void
116   (icon-view g-object)
117   (path (g-boxed-foreign tree-path))
118   (use-align :boolean)
119   (row-align :float)
120   (col-align :float))
121
122 (defun icon-view-scroll-to-path (icon-view path &key (row-align 0.5 row-align-supplied-p) (col-align 0.5 col-align-supplied-p))
123   (gtk-icon-view-scroll-to-path icon-view path (or row-align-supplied-p col-align-supplied-p) row-align col-align))
124
125 (export 'icon-view-scroll-to-path)
126
127 (defcfun gtk-icon-view-get-visible-range :boolean
128   (icon-view g-object)
129   (start-path :pointer)
130   (end-path :pointer))
131
132 (defun icon-view-get-visible-range (icon-view)
133   (with-foreign-objects ((start-path :pointer) (end-path :pointer))
134     (when (gtk-icon-view-get-visible-range icon-view start-path end-path)
135       (values (mem-ref start-path '(g-boxed-foreign tree-path :return))
136               (mem-ref end-path '(g-boxed-foreign tree-path :return))))))
137
138 (export 'icon-view-get-visible-range)
139
140 (defcfun (icon-view-set-tooltip-item "gtk_icon_view_set_tooltip_item") :void
141   (icon-view (g-object icon-view))
142   (tooltip (g-object tooltip))
143   (path (g-boxed-foreign tree-path)))
144
145 (export 'icon-view-set-tooltip-item)
146
147 (defcfun (icon-view-set-tooltip-cell "gtk_icon_view_set_tooltip_cell") :void
148   (icon-view (g-object icon-view))
149   (tooltip (g-object tooltip))
150   (path (g-boxed-foreign tree-path))
151   (cell-renderer (g-object cell-renderer)))
152
153 (export 'icon-view-set-tooltip-cell)
154
155 (defcfun gtk-icon-view-get-tooltip-context :boolean
156   (icon-view (g-object icon-view))
157   (x (:pointer :int))
158   (y (:pointer :int))
159   (keyboard-tip :boolean)
160   (model (:pointer (g-object tree-model)))
161   (path (:pointer (g-boxed-foreign tree-path)))
162   (iter (g-boxed-foreign tree-iter)))
163
164 (defun icon-view-get-tooltip-context (icon-view x y keyboard-tip)
165   (with-foreign-objects ((xx :int) (yy :int) (model-ptr :pointer) (path-ptr :pointer))
166     (setf (mem-ref xx :int) x
167           (mem-ref yy :int) y)
168     (let ((iter (make-tree-iter)))
169       (when (gtk-icon-view-get-tooltip-context icon-view xx yy keyboard-tip model-ptr path-ptr iter)
170         (values (mem-ref xx :int) (mem-ref yy :int)
171                 (convert-from-foreign (mem-ref model-ptr :pointer) '(g-object tree-model))
172                 (convert-from-foreign (mem-ref path-ptr :pointer) '(g-boxed-foreign tree-path :return))
173                 iter)))))
174
175 ; TODO: gtk_icon_view_enable_model_drag_source
176
177 ; TODO: gtk_icon_view_enable_model_drag_dest
178
179 ; TODO: gtk_icon_view_unset_model_drag_source
180
181 ; TODO: gtk_icon_view_unset_model_drag_dest
182
183 ; TODO: gtk_icon_view_set_drag_dest_item
184
185 ; TODO: gtk_icon_view_get_drag_dest_item
186
187 ; TODO: gtk_icon_view_get_dest_item_at_pos
188
189 ; TODO: gtk_icon_view_create_drag_icon