--- /dev/null
+;; Common Lisp bindings for GTK+ v2.0
+;; Copyright (C) 1999-2001 Espen S. Johnsen <esj@stud.cs.uit.no>
+;;
+;; This library is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU Lesser General Public
+;; License as published by the Free Software Foundation; either
+;; version 2 of the License, or (at your option) any later version.
+;;
+;; This library is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; Lesser General Public License for more details.
+;;
+;; You should have received a copy of the GNU Lesser General Public
+;; License along with this library; if not, write to the Free Software
+;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+;; $Id: gtktree.lisp,v 1.1 2004-11-07 17:22:06 espen Exp $
+
+
+(in-package "GTK")
+
+
+;;;; Cell Layout
+
+(defbinding cell-layout-pack-start () nil
+ (cell-layout cell-layout)
+ (cell cell-renderer)
+ (expand boolean))
+
+(defbinding cell-layout-pack-end () nil
+ (cell-layout cell-layout)
+ (cell cell-renderer)
+ (expand boolean))
+
+(defun cell-layout-pack (layout cell &key end expand)
+ (if end
+ (cell-layout-pack-end layout cell expand)
+ (cell-layout-pack-start layout cell expand)))
+
+(defbinding cell-layout-reorder () nil
+ (cell-layout cell-layout)
+ (cell cell-renderer)
+ (position int))
+
+(defbinding cell-layout-clear () nil
+ (cell-layout cell-layout))
+
+(defbinding cell-layout-add-attribute (cell-layout cell attribute column) nil
+ (cell-layout cell-layout)
+ (cell cell-renderer)
+ ((string-downcase attribute) string)
+ (column int))
+
+(def-callback-marshal %cell-layout-data-func
+ (nil cell-layout cell-renderer tree-model tree-iter))
+
+(defbinding cell-layout-set-cell-data-func (cell-layout cell function) nil
+ (cell-layout cell-layout)
+ (cell cell-renderer)
+ ((callback %cell-layout-data-func) pointer)
+ ((register-callback-function function) unsigned-int)
+ ((callback %destroy-user-data) pointer))
+
+(defbinding cell-layout-clear-attributes () nil
+ (cell-layout cell-layout)
+ (cell cell-renderer))
+
+
+
+;;;; List Store
+
+(defmethod initialize-instance ((list-store list-store) &key columns)
+ (call-next-method)
+ (%list-store-set-column-types list-store (length columns)
+ (map 'vector #'find-type-number columns)))
+
+
+(defbinding %list-store-set-column-types () nil
+ (list-store list-store)
+ (n-columns unsigned-int)
+ (columns (vector type-number)))
+
+(defbinding %list-store-set-value () nil
+ (list-store list-store)
+ (tree-iter tree-iter)
+ (column int)
+ (value gvalue))
+
+(defun list-store-set-value (list-store tree-iter column type value)
+ (let ((gvalue (gvalue-new type value)))
+ (unwind-protect
+ (%list-store-set-value list-store tree-iter column gvalue)
+ (gvalue-free gvalue))))
+
+(defbinding list-store-remove () boolean
+ (list-store list-store)
+ (tree-iter tree-iter))
+
+(defbinding list-store-insert () nil
+ (list-store list-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (position int))
+
+(defbinding list-store-insert-before (list-store &optional sibling) nil
+ (list-store list-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (sibling (or null tree-iter)))
+
+(defbinding list-store-insert-after (list-store &optional sibling) nil
+ (list-store list-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (sibling (or null tree-iter)))
+
+(defbinding list-store-prepend () nil
+ (list-store list-store)
+ ((make-instance 'tree-iter) tree-iter :in-out))
+
+(defbinding list-store-append () nil
+ (list-store list-store)
+ ((make-instance 'tree-iter) tree-iter :in-out))
+
+(defbinding list-store-clear () nil
+ (list-store list-store))
+
+(defbinding list-store-reorder () nil
+ (list-store list-store)
+ (new-order (vector int)))
+
+(defbinding list-store-swap () nil
+ (list-store list-store)
+ (a tree-iter)
+ (b tree-iter))
+
+(defbinding list-store-move-before () nil
+ (list-store list-store)
+ (iter tree-iter)
+ (psoition (or null tree-iter)))
+
+
+(defbinding list-store-move-after () nil
+ (list-store list-store)
+ (iter tree-iter)
+ (psoition tree-iter))
+
+
+;;; Tree Model
+
+
+
+;;; Tree Store
+
+(defbinding %tree-store-set-column-types () nil
+ (tree-store tree-store)
+ (n-columns unsigned-int)
+ (columns (vector type-number)))
+
+(defmethod initialize-instance ((tree-store tree-store) &key columns)
+ (call-next-method)
+ (%tree-store-set-column-types tree-store (length columns)
+ (map 'vector #'find-type-number columns)))
+
+
+(defbinding %tree-store-set-value () nil
+ (tree-store tree-store)
+ (tree-iter tree-iter)
+ (column int)
+ (value gvalue))
+
+(defbinding tree-store-remove () boolean
+ (tree-store tree-store)
+ (tree-iter tree-iter))
+
+(defbinding tree-store-insert (tree-store position &optional parent) nil
+ (tree-store tree-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (parent (or null tree-iter))
+ (position int))
+
+(defbinding tree-store-insert-before (tree-store &optional parent sibling) nil
+ (tree-store tree-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (parent (or null tree-iter))
+ (sibling (or null tree-iter)))
+
+(defbinding tree-store-insert-after (tree-store &optional parent sibling) nil
+ (tree-store tree-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (parent (or null tree-iter))
+ (sibling (or null tree-iter)))
+
+(defbinding tree-store-prepend (tree-store &optional parent) nil
+ (tree-store tree-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (parent (or null tree-iter)))
+
+(defbinding tree-store-append (tree-store &optional parent) nil
+ (tree-store tree-store)
+ ((make-instance 'tree-iter) tree-iter :in-out)
+ (parent (or null tree-iter)))
+
+(defbinding (tree-store-is-ancestor-p "gtk_tree_store_is_ancestor") () boolean
+ (tree-store tree-store)
+ (tree-iter tree-iter)
+ (descendant tree-iter))
+
+(defbinding tree-store-iter-depth () int
+ (tree-store tree-store)
+ (tree-iter tree-iter))
+
+(defbinding tree-store-clear () nil
+ (tree-store tree-store))
+
+(defbinding tree-store-reorder () nil
+ (tree-store tree-store)
+ (parent tree-iter)
+ (new-order (vector int)))
+
+(defbinding tree-store-swap () nil
+ (tree-store tree-store)
+ (a tree-iter)
+ (b tree-iter))
+
+(defbinding tree-store-move-before () nil
+ (tree-store tree-store)
+ (iter tree-iter)
+ (psoition (or null tree-iter)))
+
+
+(defbinding tree-store-move-after () nil
+ (tree-store tree-store)
+ (iter tree-iter)
+ (psoition tree-iter))
+
+
+
+;;; Tree View
+
+(defbinding tree-view-get-selection () tree-selection
+ (tree-view tree-view))
+
+(defbinding tree-view-columns-autosize () nil
+ (tree-view tree-view))
+
+(defbinding tree-view-append-column () int
+ (tree-view tree-view)
+ (tree-view-column tree-view-column))
+
+(defbinding tree-view-remove-column () int
+ (tree-view tree-view)
+ (tree-view-column tree-view-column))
+
+(defbinding tree-view-insert-column (view columnd position) int
+ (view tree-view)
+ (column tree-view-column)
+ ((if (eq position :end) -1 position) int))
+
+(defbinding tree-view-get-column () tree-view-column
+ (tree-view tree-view)
+ (position int))
+
+(defbinding tree-view-move-column-after () nil
+ (tree-view tree-view)
+ (column tree-view-column)
+ (base-column (or null tree-view-column)))
+
+;;(defbinding tree-view-set-column drag-function ...)
+
+(defbinding tree-view-scroll-to-point () nil
+ (tree-view tree-view)
+ (tree-x int)
+ (tree-y int))
+
+(defbinding tree-view-scroll-to-cell () nil
+ (tree-view tree-view)
+ (path (or null tree-path))
+ (column (or null tree-view-column))
+ (use-align boolean)
+ (row-align single-float)
+ (col-align single-float))
+
+(defbinding tree-view-set-cursor () nil
+ (tree-view tree-view)
+ (path tree-path)
+ (focus-column tree-view-column)
+ (start-editing boolean))
+
+(defbinding tree-view-set-cursor-on-cell () nil
+ (tree-view tree-view)
+ (path tree-path)
+ (focus-column (or null tree-view-column))
+ (focus-cell (or null cell-renderer))
+ (start-editing boolean))
+
+(defbinding tree-view-get-cursor () nil
+ (tree-view tree-view)
+ (path tree-path :out )
+ (focus-column tree-view-column :out))
+
+(defbinding tree-view-row-activated () nil
+ (tree-view tree-view)
+ (path tree-path )
+ (column tree-view-column))
+
+(defbinding tree-view-expand-all () nil
+ (tree-view tree-view))
+
+(defbinding tree-view-collapse-all () nil
+ (tree-view tree-view))
+
+(defbinding tree-view-expand-to-path () nil
+ (tree-view tree-view)
+ (path tree-path))
+
+(defbinding tree-view-expand-row () nil
+ (tree-view tree-view)
+ (path tree-path)
+ (open-all boolean))
+
+(defbinding tree-view-collapse-row () nil
+ (tree-view tree-view)
+ (path tree-path))
+
+(def-callback-marshal %tree-view-mapping-func (nil tree-view tree-path))
+
+(defbinding %tree-view-map-expanded-rows () nil
+ (tree-view tree-view)
+ ((callback %tree-view-mapping-func) pointer)
+ (callback-id unsigned-int))
+
+(defun map-expanded-rows (function tree-view)
+ (with-callback-function (id function)
+ (%tree-view-map-expanded-rows tree-view id)))
+
+(defbinding (tree-view-row-expanded-p "gtk_tree_view_row_expanded") () boolean
+ (tree-view tree-view)
+ (path tree-path))
+
+(defbinding tree-view-get-path-at-pos
+ (tree-view x y &optional (cell-x 0) (cell-y 0)) boolean
+ (tree-view tree-view)
+ (x int)
+ (y int)
+ (path tree-path :out)
+ (column tree-view-column :out)
+ (cell-x int)
+ (cell-y int))
+
+(defbinding tree-view-get-cell-area () nil
+ (tree-view tree-view)
+ (path (or null tree-path))
+ (column (or null tree-view-column))
+ ((make-instance 'gdk:rectangle) gdk:rectangle :in-out))
+
+(defbinding tree-view-get-background-area () nil
+ (tree-view tree-view)
+ (path (or null tree-path))
+ (column (or null tree-view-column))
+ ((make-instance 'gdk:rectangle) gdk:rectangle :in-out))
+
+(defbinding tree-view-get-visible-rect () nil
+ (tree-view tree-view)
+ ((make-instance 'gdk:rectangle) gdk:rectangle :in-out))
+
+;; and many more functions which we'll add later
+