some functions related to d'n'd are written
[cl-gtk2.git] / gtk / gtk.tree-view.lisp
index f9a1e19..50efebc 100644 (file)
 
 (export 'tree-view-convert-widget-to-tree-coords)
 
-; TODO: gtk_tree_view_enable_model_drag_dest
+(defcfun gtk-tree-view-enable-model-drag-dest :void
+  (tree-view g-object)
+  (targets :pointer)
+  (n-targets :int)
+  (actions gdk:drag-action))
+
+(defun tree-view-enable-model-drag-dest (tree-view targets actions)
+  (with-foreign-boxed-array (n-targets targets-ptr target-entry targets)
+    (gtk-tree-view-enable-model-drag-dest tree-view targets-ptr n-targets actions)))
 
-; TODO: gtk_tree_view_enable_model_drag_source
+(export 'tree-view-enable-model-drag-dest)
+
+(defcfun gtk-tree-view-enable-model-drag-source :void
+  (tree-view g-object)
+  (start-button-mask gdk:modifier-type)
+  (targets :pointer)
+  (n-targets :int)
+  (actions gdk:drag-action))
+
+(defun tree-view-enable-model-drag-source (tree-view start-button-mask targets actions)
+  (with-foreign-boxed-array (n-targets targets-ptr target-entry targets)
+    (gtk-tree-view-enable-model-drag-source tree-view start-button-mask targets-ptr n-targets actions)))
+
+(export 'tree-view-enable-model-drag-source)
 
 ; TODO: gtk_tree_view_unset_rows_drag_source
 
 
 ; TOOD: gtk_tree_view_get_drag_dest_row
 
-; TOOD: gtk_tree_view_get_dest_row_at_pos
+(defcfun gtk-tree-view-get-dest-row-at-pos :boolean
+  (tree_view g-object)
+  (drag-x :int)
+  (drag-y :int)
+  (path :pointer)
+  (pos :pointer))
+
+(defun tree-view-get-dest-row-at-pos (tree-view x y)
+  (with-foreign-objects ((path :pointer) (pos :int))
+    (when (gtk-tree-view-get-dest-row-at-pos tree-view x y path pos)
+      (values (mem-ref path '(g-boxed-foreign tree-path :return))
+              (mem-ref pos 'tree-view-drop-position)))))
+
+(export 'tree-view-get-dest-row-at-pos)
 
 ; TOOD: gtk_tree_view_create_drag_icon
 
 
 (export 'tree-view-get-tooltip-context)
 
-; TODO: GtkTreeView drag-and-drop
\ No newline at end of file
+; TODO: GtkTreeView drag-and-drop
+
+(defcfun gtk-cell-view-get-size-of-row :boolean
+  (cell-view (g-object cell-view))
+  (path (g-boxed-foreign tree-path))
+  (requisition (g-boxed-foreign requisition)))
+
+(defun cell-view-get-size-of-row (cell-view path)
+  (let ((requisition (make-requisition)))
+    (gtk-cell-view-get-size-of-row cell-view path requisition)
+    requisition))
+
+(export 'cell-view-get-size-of-row)