X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=gtk%2Fgtk.tree-model.lisp;h=edbcbd1e0370286948e9919d0550ab0eb33b92d2;hb=e8e2d1cad48f9b6f1d607651f93cc51387c60216;hp=0840b2a27843c55af853d7a577bf435f80683148;hpb=2db6e819bb5ba103c7d961c06a49e8fe276d0146;p=cl-gtk2.git diff --git a/gtk/gtk.tree-model.lisp b/gtk/gtk.tree-model.lisp index 0840b2a..edbcbd1 100644 --- a/gtk/gtk.tree-model.lisp +++ b/gtk/gtk.tree-model.lisp @@ -80,7 +80,57 @@ (set-default-sort-func (:void (sortable (g-object tree-sortable)) (func :pointer) (data :pointer) (destroy-notify :pointer))) (has-default-sort-func (:boolean (sortable (g-object tree-sortable))))) -; TODO: GtkTreeModelSort +(defcfun (tree-model-sort-convert-child-path-to-path "gtk_tree_model_sort_convert_child_path_to_path") (g-boxed-foreign tree-path :return) + (tree-model-sort (g-object tree-model-sort)) + (child-path (g-boxed-foreign tree-path))) + +(export 'tree-model-sort-convert-child-path-to-path) + +(defcfun gtk-tree-model-sort-convert-child-iter-to-iter :boolean + (tree-model-sort (g-object tree-model-sort)) + (sort-iter (g-boxed-foreign tree-iter)) + (child-iter (g-boxed-foreign tree-iter))) + +(defun tree-model-sort-convert-child-iter-to-iter (tree-model-sort child-iter) + (let ((sort-iter (make-tree-iter))) + (when (gtk-tree-model-sort-convert-child-iter-to-iter tree-model-sort sort-iter child-iter) + sort-iter))) + +(export 'tree-model-sort-convert-child-iter-to-iter) + +(defcfun (tree-model-sort-convert-path-to-child-path "gtk_tree_model_sort_convert_path_to_child_path") (g-boxed-foreign tree-path :return) + (tree-model-sort (g-object tree-model-sort)) + (sort-path (g-boxed-foreign tree-path))) + +(export 'tree-model-sort-convert-path-to-child-path) + +(defcfun gtk-tree-model-sort-convert-iter-to-child-iter :void + (tree-model-sort (g-object tree-model-sort)) + (child-iter (g-boxed-foreign tree-iter)) + (sorted-iter (g-boxed-foreign tree-iter))) + +(defun tree-model-sort-convert-iter-to-child-iter (tree-model-sort sorted-iter) + (let ((child-iter (make-tree-iter))) + (gtk-tree-model-sort-convert-iter-to-child-iter tree-model-sort child-iter sorted-iter) + child-iter)) + +(export 'tree-model-sort-convert-iter-to-child-iter) + +(defcfun (tree-model-sort-reset-default-sort-func "gtk_tree_model_sort_reset_default_sort_func") :void + (tree-model-sort (g-object tree-model-sort))) + +(export 'tree-model-sort-reset-default-sort-func) + +(defcfun (tree-model-sort-clear-cache "gtk_tree_model_sort_clear_cache") :void + (tree-model-sort (g-object tree-model-sort))) + +(export 'tree-model-sort-clear-cached) + +(defcfun (tree-model-sort-iter-is-valid "gtk_tree_model_sort_iter_is_valid") :boolean + (tree-model-sort (g-object tree-model-sort)) + (iter (g-boxed-foreign tree-iter))) + +(export 'tree-model-sort-iter-is-valid) ; TODO: GtkTreeModelFilter @@ -166,6 +216,10 @@ (tree-iter-user-data iter) n) t) +(defmethod tree-model-iter-children-impl ((model array-list-store) iter parent) + (declare (ignore iter parent)) + nil) + (defmethod tree-model-iter-n-children-impl ((model array-list-store) iter) (if (null iter) (length (store-items model)) @@ -321,11 +375,11 @@ (defcfun gtk-tree-model-iter-parent :boolean (tree-model g-object) (iter (g-boxed-foreign tree-iter)) - (parent (g-boxed-foreign tree-iter))) + (child (g-boxed-foreign tree-iter))) (defun tree-model-iter-parent (tree-model iter) (let ((parent (make-tree-iter))) - (if (gtk-tree-model-iter-parent tree-model iter parent) + (if (gtk-tree-model-iter-parent tree-model parent iter) parent nil))) @@ -493,10 +547,11 @@ (gethash id (tree-lisp-store-id-map tree))) (defmethod tree-model-get-iter-impl ((store tree-lisp-store) iter path) - (let* ((node (get-node-by-path store path)) - (node-idx (get-assigned-id store node))) - (setf (tree-iter-stamp iter) 0 - (tree-iter-user-data iter) node-idx))) + (ignore-errors + (let* ((node (get-node-by-path store path)) + (node-idx (get-assigned-id store node))) + (setf (tree-iter-stamp iter) 0 + (tree-iter-user-data iter) node-idx)))) (defun get-node-by-iter (tree iter) (get-node-by-id tree (tree-iter-user-data iter)))