X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/clg/blobdiff_plain/030b428630402f6ba48a88f27e298c11379e8e80..80c00d73e8060c5a7cb8944e20c1412646e0796e:/gtk/gtktree.lisp diff --git a/gtk/gtktree.lisp b/gtk/gtktree.lisp index e82d280..6c30701 100644 --- a/gtk/gtktree.lisp +++ b/gtk/gtktree.lisp @@ -20,7 +20,7 @@ ;; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE ;; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -;; $Id: gtktree.lisp,v 1.24 2006-09-15 07:43:00 espen Exp $ +;; $Id: gtktree.lisp,v 1.27 2007-05-10 20:20:05 espen Exp $ (in-package "GTK") @@ -75,8 +75,8 @@ (defbinding cell-layout-clear-attributes () nil ;;;; Cell Renderer -(defmethod compute-signal-function ((gobject cell-renderer-toggle) (signal (eql 'toggled)) function object) - (declare (ignore gobject signal function object)) +(defmethod compute-signal-function ((gobject cell-renderer-toggle) (signal (eql 'toggled)) function object args) + (declare (ignore gobject signal function object args)) (let ((function (call-next-method))) #'(lambda (object path) (funcall function object (ensure-tree-path path))))) @@ -354,6 +354,14 @@ (defun ensure-tree-path (path) ;;; Tree Model +(defgeneric tree-model-value (model row column)) +(defgeneric (setf tree-model-value) (value model row column)) +(defgeneric tree-model-row-data (model row)) +(defgeneric (setf tree-model-row-data) (data model row)) +(defgeneric tree-model-column-index (model column)) +(defgeneric tree-model-column-name (model index)) + + (defbinding %tree-row-reference-new () pointer (model tree-model) (path tree-path)) @@ -401,15 +409,11 @@ (defbinding %tree-model-get-value () nil (column int) (gvalue gvalue)) -(defgeneric tree-model-value (model row column)) - (defmethod tree-model-value ((model tree-model) row column) (let ((index (tree-model-column-index model column))) (with-gvalue (gvalue) (%tree-model-get-value model (ensure-tree-iter model row) index gvalue)))) -(defgeneric tree-model-row-data (model row)) - (defmethod tree-model-row-data ((model tree-model) row) (coerce (loop @@ -434,9 +438,9 @@ (defbinding (tree-model-iter-has-child-p "gtk_tree_model_iter_has_child") (tree-model tree-model) (iter tree-iter)) -(defbinding tree-model-iter-n-children () int +(defbinding tree-model-iter-n-children (tree-model &optional iter) int (tree-model tree-model) - (iter tree-iter)) + (iter (or null tree-iter))) (defbinding tree-model-iter-nth-child (tree-model parent n &optional (iter (make-instance 'tree-iter))) boolean @@ -489,7 +493,6 @@ (defbinding tree-model-rows-reordered () nil (iter tree-iter) (new-order int)) - (defmethod tree-model-column-index ((model tree-model) column) (or (etypecase column @@ -502,10 +505,6 @@ (defmethod tree-model-column-name ((model tree-model) index) (svref (user-data model 'column-names) index)) -(defgeneric (setf tree-model-value) (value model row column)) - -(defgeneric (setf tree-model-row-data) (data model row)) - (defmethod (setf tree-model-row-data) ((data list) (model tree-model) (iter tree-iter)) (loop for (column value) on data by #'cddr @@ -636,7 +635,7 @@ (defun tree-sortable-get-sort-column (sortable) (values (if special-p (int-to-sort-order column) - (column-name sortable column)) + (tree-model-column-name sortable column)) order))) (defbinding (tree-sortable-set-sort-column