some functions related to d'n'd are written
authorAndrey Kutejko <andy128k@gmail.com>
Wed, 11 Nov 2009 21:39:09 +0000 (23:39 +0200)
committerDmitry Kalyanov <Kalyanov.Dmitry@gmail.com>
Thu, 26 Nov 2009 17:57:38 +0000 (20:57 +0300)
gdk/gdk.objects.lisp
gtk/cl-gtk2-gtk.asd
gtk/gtk.tree-view.lisp
gtk/gtk.widget.lisp

index 78774d5..9326171 100644 (file)
   (:bilevel 0)
   (:full 1))
 
+(define-g-flags "GdkDragAction" drag-action
+    (:export t :type-initializer "gdk_drag_action_get_type")
+  (:default 1)
+  (:copy 2)
+  (:move 4)
+  (:link 8)
+  (:private 16)
+  (:ask 32))
+
 (define-g-enum "GdkColorspace" colorspace ()
   :rgb)
 
index a602476..823139e 100644 (file)
@@ -23,6 +23,8 @@
                (:file "gtk.scale-button")
                (:file "gtk.entry")
                (:file "gtk.spin-button")
+               (:file "gtk.selections")
+               (:file "gtk.dnd")
                (:file "gtk.text")
                (:file "gtk.tree-model")
                (:file "gtk.tree-view-column")
index 34cf773..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)))
+
+(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))
 
-; TODO: gtk_tree_view_enable_model_drag_source
+(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
 
index 7e98dae..6532f11 100644 (file)
@@ -2,6 +2,17 @@
 
 ; TODO: GtkWidget
 
+(define-g-boxed-cstruct selection-data "GtkSelectionData"
+  (selection :pointer) ; GdkAtom
+  (target :pointer) ; GdkAtom
+  (type :pointer) ; GdkAtom
+  (format :int)
+  (data :pointer :initform 0)
+  (length :int)
+  (display g-object))
+
+(export (boxed-related-symbols 'selection-data))
+
 (defun widget-flags (widget)
   (convert-from-foreign (gtk-object-flags-as-integer widget) 'widget-flags))
 
 (defun widget-snapshot (widget &optional clip-rectangle)
   (gtk-widget-get-snapshot widget clip-rectangle))
 
-(export 'widget-snapshot)
\ No newline at end of file
+(export 'widget-snapshot)