-; (define-foreign ("gtk_clist_get_row_style" clist-row-style) () style
-; (clist clist)
-; (row int))
-
-; (define-foreign clist-set-shift () nil
-; (clist clist)
-; (row int)
-; (column int)
-; (vertical int)
-; (horizontal int))
-
-; (define-foreign ("gtk_clist_set_selectable"
-; (setf clist-selectable-p)) () nil
-; (clist clist)
-; (row int)
-; (selectable boolean))
-
-; (define-foreign ("gtk_clist_get_selectable" clist-selectable-p) () boolean
-; (clist clist)
-; (row int))
-
-; (define-foreign ("gtk_clist_insert" %clist-insert) () int
-; (clist clist)
-; (row int)
-; (text pointer))
-
-; (defun clist-insert (clist row text)
-; (unless (= (length text) (clist-n-columns clist))
-; (error "Wrong number of elements in ~A" text))
-; (with-array (data :initial-contents text :free-contents t)
-; (%clist-insert clist row data)))
-
-; (defun clist-prepend (clist text)
-; (clist-insert clist 0 text))
-
-; (defun clist-append (clist text)
-; (clist-insert clist -1 text))
-
-; (define-foreign clist-remove () nil
-; (clist clist)
-; (row int))
-
-; (define-foreign ("gtk_clist_set_row_data_full" clist-set-row-data)
-; (clist row data &optional destroy-function) nil
-; (clist clist)
-; (row int)
-; ((register-user-data data destroy-function) unsigned-long)
-; (*destroy-marshal* pointer))
-
-; (defun (setf clist-row-data) (data clist row)
-; (clist-set-row-data clist row data)
-; data)
-
-; (define-foreign %clist-get-row-data () unsigned-long
-; (clist clist)
-; (row int))
-
-; (defun clist-row-data (clist row)
-; (find-user-data (%clist-get-row-data clist row)))
-
-; (define-foreign %clist-find-row-from-data () int
-; (clist clist)
-; (id unsigned-long))
-
-; (define-foreign clist-select-row (clist row &optional (column -1)) nil
-; (clist clist)
-; (row int)
-; (column int))
-
-; (define-foreign clist-unselect-row (clist row &optional (column -1)) nil
-; (clist clist)
-; (row int)
-; (column int))
-
-; (define-foreign clist-undo-selection () nil
-; (clist clist))
-
-; (define-foreign clist-clear () nil
-; (clist clist))
-
-; (define-foreign ("gtk_clist_get_selection_info" clist-selection-info) () int
-; (clist clist)
-; (x int)
-; (y int)
-; (row int :out)
-; (column int :out))
-
-; (define-foreign clist-select-all () nil
-; (clist clist))
-
-; (define-foreign clist-unselect-all () nil
-; (clist clist))
-
-; (define-foreign clist-swap-rows () nil
-; (clist clist)
-; (row1 int)
-; (row2 int))
-
-; (define-foreign ("gtk_clist_row_move" clist-move-row) () nil
-; (clist clist)
-; (source-row int)
-; (dest-row int))
-
-; ;(define-foreign clist-set-compare-func ...)
-
-; (define-foreign clist-sort () nil
-; (clist clist))
-
-; (define-foreign ("gtk_clist_set_auto_sort"
-; (setf clist-auto-sort-p)) () nil
-; (clist clist)
-; (auto-sort boolean))
-
-; ;; cl-gtk.c
-; (define-foreign clist-auto-sort-p () boolean
-; (clist clist))
-
-; (defun clist-focus-row (clist)
-; (let ((row (%clist-focus-row clist)))
-; (when (>= row 0)
-; row)))
-
-; ;; cl-gtk.c
-; (define-foreign clist-selection () (list int)
-; (clist clist))
-
-
-
-; ;;; CTree
-
-; (define-foreign %ctree-new () ctree
-; (columns int)
-; (tree-column int))
-
-; (define-foreign %ctree-new-with-titles () ctree
-; (columns int)
-; (tree-column int)
-; (titles pointer))
-
-; (defun ctree-new (columns &optional (tree-column 0))
-; (if (atom columns)
-; (%ctree-new columns tree-column)
-; (with-array (titles :initial-contents columns :free-contents t)
-; (%ctree-new-with-titles (length columns) tree-column titles))))
-
-; (define-foreign %ctree-insert-node () ctree-node
-; (ctree ctree)
-; (parent (or null ctree-node))
-; (sibling (or null ctree-node))
-; (text pointer)
-; (spacing uint8)
-; (pixmap-closed (or null gdk:pixmap))
-; (bitmap-closed (or null gdk:bitmap))
-; (pixmap-opened (or null gdk:pixmap))
-; (bitmap-opened (or null gdk:bitmap))
-; (leaf boolean)
-; (expaned boolean))
-
-; (defun ctree-insert-node (ctree parent sibling text spacing
-; &key pixmap closed opened leaf expanded)
-; (multiple-value-bind (pixmap-closed mask-closed)
-; (%pixmap-create (or closed pixmap))
-; (multiple-value-bind (pixmap-opened mask-opened)
-; (%pixmap-create (or opened (and (not leaf) pixmap)))
-; (with-array (data :clear t :initial-contents text :free-contents t)
-; (%ctree-insert-node
-; ctree parent sibling data spacing pixmap-closed mask-closed
-; pixmap-opened mask-opened leaf expanded)))))
-
-; (define-foreign ctree-remove-node () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (defun ctree-insert-from-list (ctree parent tree function)
-; (clist-freeze ctree)
-; (labels ((insert-node (node parent)
-; (let ((ctree-node
-; (ctree-insert-node
-; ctree parent nil
-; (make-list (clist-n-columns ctree) :initial-element "")
-; 0 :leaf (not (rest node)))))
-; (funcall function ctree-node (car node))
-; (dolist (child (rest node))
-; (insert-node child ctree-node)))))
-; (if parent
-; (insert-node tree parent)
-; (dolist (node tree)
-; (insert-node node nil))))
-; (clist-thaw ctree))
-
-; (defun ctree-map-to-list (ctree node function)
-; (labels ((map-children (child)
-; (when child
-; (let ((sibling (ctree-node-sibling child)))
-; (cons
-; (ctree-map-to-list ctree child function)
-; (map-children sibling))))))
-; (if node
-; (cons
-; (funcall function node)
-; (map-children (ctree-node-child node)))
-; (map-children (ctree-nth-node ctree 0)))))
-
-
-; (defun %ctree-apply-recursive (ctree node pre function depth)
-; (when (and pre node (or (not depth) (<= (ctree-node-level node) depth)))
-; (funcall function node))
-
-; (let ((first-child (if node
-; (ctree-node-child node)
-; (ctree-nth-node ctree 0))))
-; (when (and
-; first-child
-; (or (not depth) (<= (ctree-node-level first-child) depth)))
-; (labels ((foreach-child (child)
-; (when child
-; (let ((sibling (ctree-node-sibling child)))
-; (%ctree-apply-recursive ctree child pre function depth)
-; (foreach-child sibling)))))
-; (foreach-child first-child))))
-
-; (when (and
-; (not pre) node (or (not depth) (<= (ctree-node-level node) depth)))
-; (funcall function node)))
-
-; (defun ctree-apply-post-recursive (ctree node function &optional depth)
-; (%ctree-apply-recursive ctree node nil function depth))
-
-; (defun ctree-apply-pre-recursive (ctree node function &optional depth)
-; (%ctree-apply-recursive ctree node t function depth))
-
-; (define-foreign ("gtk_ctree_is_viewable" ctree-node-viewable-p) () boolean
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-last () ctree-node
-; (ctree ctree))
-
-; (define-foreign ("gtk_ctree_node_nth" ctree-nth-node) () ctree-node
-; (ctree ctree)
-; (row int))
-
-; (define-foreign ctree-find () boolean
-; (ctree ctree)
-; (node ctree-node)
-; (child ctree-node))
-
-; (define-foreign ("gtk_ctree_is_ancestor" ctree-ancestor-p) () boolean
-; (ctree ctree)
-; (node ctree-node)
-; (child ctree-node))
-
-; (define-foreign %ctree-find-by-row-data () int
-; (clist clist)
-; (node ctree-node)
-; (id unsigned-long))
-
-; (define-foreign ("gtk_ctree_is_hot_spot" ctree-hot-spot-p) () boolean
-; (ctree ctree)
-; (x int)
-; (y int))
-
-; (define-foreign ctree-move () nil
-; (ctree ctree)
-; (node ctree-node)
-; (new-parent ctree-node)
-; (new-sibling ctree-node))
-
-; (define-foreign ctree-expand () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-expand-recursive () nil
-; (ctree ctree)
-; (node (or null ctree-node)))
-
-; (define-foreign ctree-expand-to-depth () nil
-; (ctree ctree)
-; (node (or null ctree-node))
-; (depth int))
-
-; (define-foreign ctree-collapse () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-collapse-recursive () nil
-; (ctree ctree)
-; (node (or null ctree-node)))
-
-; (define-foreign ctree-collapse-to-depth () nil
-; (ctree ctree)
-; (node (or null ctree-node))
-; (depth int))
-
-; (define-foreign ctree-toggle-expansion () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-toggle-expansion-recursive () nil
-; (ctree ctree)
-; (node (or null ctree-node)))
-
-; (define-foreign ctree-select () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-unselect () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign %ctree-real-select-recursive () nil
-; (ctree ctree)
-; (node (or null ctree-node))
-; (state boolean))
-
-; (defun ctree-select-recursive (ctree node)
-; (%ctree-real-select-recursive ctree node t))
-
-; (defun ctree-unselect-recursive (ctree node)
-; (%ctree-real-select-recursive ctree node nil))
-
-; (define-foreign ("gtk_ctree_node_set_text" (setf ctree-cell-text)) () nil
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (text string))
-
-; (define-foreign %ctree-node-set-pixmap () nil
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (gdk:pixmap gdk:pixmap)
-; (mask (or null gdk:bitmap)))
-
-; (defun (setf ctree-cell-pixmap) (source ctree node column)
-; (multiple-value-bind (pixmap mask)
-; (%pixmap-create source)
-; (%ctree-node-set-pixmap ctree node column pixmap mask)
-; (values pixmap mask)))
-
-; (define-foreign %ctree-node-set-pixtext () nil
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (text string)
-; (spacing uint8)
-; (pixmap gdk:pixmap)
-; (mask (or null gdk:bitmap)))
-
-; (defun ctree-set-cell-pixtext (ctree node column text spacing source)
-; (multiple-value-bind (pixmap mask)
-; (%pixmap-create source)
-; (%ctree-node-set-pixtext ctree node column text spacing pixmap mask)))
-
-; (define-foreign %ctree-set-node-info () ctree-node
-; (ctree ctree)
-; (node (or null ctree-node))
-; (text string)
-; (spacing uint8)
-; (pixmap-closed (or null gdk:pixmap))
-; (bitmap-closed (or null gdk:bitmap))
-; (pixmap-opened (or null gdk:pixmap))
-; (bitmap-opened (or null gdk:bitmap))
-; (leaf boolean)
-; (expaned boolean))
-
-; (defun ctree-set-node-info (ctree node text spacing
-; &key pixmap closed opened leaf expanded)
-; (multiple-value-bind (pixmap-closed mask-closed)
-; (%pixmap-create (or closed pixmap))
-; (multiple-value-bind (pixmap-opened mask-opened)
-; (%pixmap-create (or opened (and (not leaf) pixmap)))
-; (%ctree-set-node-info
-; ctree node text spacing pixmap-closed mask-closed
-; pixmap-opened mask-opened leaf expanded))))
-
-; (define-foreign ("gtk_ctree_node_set_shift" ctree-set-shift) () nil
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (vertical int)
-; (horizontal int))
-
-; (define-foreign ("gtk_ctree_node_set_selectable"
-; (setf ctree-selectable-p)) () nil
-; (ctree ctree)
-; (node ctree-node)
-; (selectable boolean))
-
-; (define-foreign ("gtk_ctree_node_get_selectable"
-; ctree-selectable-p) () boolean
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ("gtk_ctree_node_get_cell_type" ctree-cell-type) () cell-type
-; (ctree ctree)
-; (node ctree-node)
-; (column int))
-
-; (define-foreign %ctree-node-get-text () boolean
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (text string :out))
-
-; (defun ctree-cell-text (ctree node column)
-; (multiple-value-bind (success text)
-; (%ctree-node-get-text ctree node column)
-; (unless success
-; (error
-; "Cell in node ~A, column ~D in ~A is not of type :text"
-; node column ctree))
-; text))
-
-; (define-foreign %ctree-node-get-pixmap () boolean
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (pixmap gdk:pixmap :out)
-; (mask gdk:bitmap :out))
-
-; (defun ctree-cell-pixmap (ctree node column)
-; (multiple-value-bind (success pixmap mask)
-; (%ctree-node-get-pixmap ctree node column)
-; (unless success
-; (error
-; "Cell in node ~A column ~D in ~A is not of type :text"
-; node column ctree))
-; (values pixmap mask)))
-
-; (define-foreign %ctree-node-get-pixtext () boolean
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (text string :out)
-; (spacing unsigned-int :out)
-; (pixmap gdk:pixmap :out)
-; (mask gdk:bitmap :out))
-
-; (defun ctree-cell-pixtext (ctree node column)
-; (multiple-value-bind (success text spacing pixmap mask)
-; (%ctree-node-get-pixtext ctree node column)
-; (unless success
-; (error
-; "Cell in node ~A column ~D in ~A is not of type :text"
-; node column ctree))
-; (values text spacing pixmap mask)))
-
-; (define-foreign ("gtk_ctree_get_node_info" ctree-node-info) () nil
-; (ctree ctree)
-; (node ctree-node)
-; (text string :out)
-; (spacing unsigned-int :out)
-; (pixmap-closed gdk:pixmap :out)
-; (mask-closed gdk:bitmap :out)
-; (pixmap-opened gdk:pixmap :out)
-; (mask-opened gdk:bitmap :out)
-; (leaf boolean :out)
-; (expanded boolean :out))
-
-; (define-foreign ("gtk_ctree_node_set_row_style"
-; (setf ctree-row-style)) () nil
-; (ctree ctree)
-; (node ctree-node)
-; (style (or null style)))
-
-; (define-foreign ("gtk_ctree_node_get_row_style" ctree-row-style) () style
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ("gtk_ctree_node_set_cell_style"
-; (setf ctree-cell-style)) () nil
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (style (or null style)))
-
-; (define-foreign ("gtk_ctree_node_get_cell_style"
-; ctree-cell-style) () style
-; (ctree ctree)
-; (node ctree-node)
-; (column int))
-
-; (define-foreign %ctree-node-set-foreground () nil
-; (ctree ctree)
-; (node ctree-node)
-; (color gdk:color))
-
-; (defun (setf ctree-node-foreground) (color clist row)
-; (gdk:with-colors ((color color))
-; (%ctree-node-set-foreground clist row color))
-; color)
-
-; (define-foreign %ctree-node-set-background () nil
-; (ctree ctree)
-; (node ctree-node)
-; (color gdk:color))
-
-; (defun (setf ctree-node-background) (color clist row)
-; (gdk:with-colors ((color color))
-; (%ctree-node-set-background clist row color))
-; color)
-
-; (define-foreign ("gtk_ctree_node_set_row_data_full" ctree-set-node-data)
-; (ctree node data &optional destroy-function) nil
-; (ctree ctree)
-; (node ctree-node)
-; ((register-user-data data destroy-function) unsigned-long)
-; (*destroy-marshal* pointer))
-
-; (defun (setf ctree-node-data) (data ctree node)
-; (ctree-set-node-data ctree node data)
-; data)
-
-; (define-foreign %ctree-node-get-row-data () unsigned-long
-; (ctree ctree)
-; (node ctree-node))
-
-; (defun ctree-node-data (ctree node)
-; (find-user-data (%ctree-node-get-row-data ctree node)))
-
-; (define-foreign ctree-node-moveto () nil
-; (ctree ctree)
-; (node ctree-node)
-; (column int)
-; (row-aling single-float)
-; (column-aling single-float))
-
-; (define-foreign ("gtk_ctree_node_is_visible"
-; ctree-node-visibility) () visibility
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-sort-node () nil
-; (ctree ctree)
-; (node ctree-node))
-
-; (define-foreign ctree-sort-recursive (ctree &optional node) nil
-; (ctree ctree)
-; (node (or null ctree-node)))
-
-; ;; cl-gtk.c
-; (define-foreign ("gtk_clist_selection" ctree-selection) () (list ctree-node)
-; (ctree ctree))
-
-; ;; cl-gtk.c
-; (define-foreign ctree-node-leaf-p () boolean
-; (node ctree-node))
-
-; ;; cl-gtk.c
-; (define-foreign ctree-node-parent () ctree-node
-; (node ctree-node))
-
-; ;; cl-gtk.c
-; (define-foreign ctree-node-child () ctree-node
-; (node ctree-node))
-
-; ;; cl-gtk.c
-; (define-foreign ctree-node-sibling () ctree-node
-; (node ctree-node))
-
-; ;; cl-gtk.c
-; (define-foreign ctree-node-level () int
-; (node ctree-node))