From: Andrey Kutejko Date: Sun, 17 Jan 2010 22:03:42 +0000 (+0200) Subject: tree-model-filter X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=c6be8ac0cdf0c3c1f6e21d38e8a4b95e1d9b1839;p=cl-gtk2.git tree-model-filter --- diff --git a/gtk/cl-gtk2-gtk.asd b/gtk/cl-gtk2-gtk.asd index 52871c3..c825c29 100644 --- a/gtk/cl-gtk2-gtk.asd +++ b/gtk/cl-gtk2-gtk.asd @@ -64,6 +64,7 @@ (:file "gtk.link-button") (:file "gtk.list-store") (:file "gtk.tree-store") + (:file "gtk.tree-model-filter") (:file "gtk.clipboard") (:file "gtk.main-loop-events") diff --git a/gtk/gtk.tree-model-filter.lisp b/gtk/gtk.tree-model-filter.lisp new file mode 100644 index 0000000..a75a85d --- /dev/null +++ b/gtk/gtk.tree-model-filter.lisp @@ -0,0 +1,84 @@ +(in-package :gtk) + +(defcallback gtk-tree-model-filter-visible-func-callback :boolean + ((tree-model g-object) (iter (g-boxed-foreign tree-iter)) (data :pointer)) + (let ((fn (get-stable-pointer-value data))) + (funcall fn tree-model iter))) + +(defcfun gtk-tree-model-filter-set-visible-func :void + (filter g-object) + (func :pointer) + (data :pointer) + (destroy-notify :pointer)) + +(defun tree-model-filter-set-visible-function (tree-model-filter function) + (gtk-tree-model-filter-set-visible-func + tree-model-filter + (callback gtk-tree-model-filter-visible-func-callback) + (allocate-stable-pointer function) + (callback stable-pointer-free-destroy-notify-callback))) + +(export 'tree-model-filter-set-visible-function) + +#| + +typedef void (* GtkTreeModelFilterModifyFunc) (GtkTreeModel *model, + GtkTreeIter *iter, + GValue *value, + gint column, + gpointer data); + +void gtk_tree_model_filter_set_modify_func (GtkTreeModelFilter *filter, + gint n_columns, + GType *types, + GtkTreeModelFilterModifyFunc func, + gpointer data, + GDestroyNotify destroy); + +void gtk_tree_model_filter_set_visible_column (GtkTreeModelFilter *filter, + gint column); + +/* conversion */ +gboolean gtk_tree_model_filter_convert_child_iter_to_iter (GtkTreeModelFilter *filter, + GtkTreeIter *filter_iter, + GtkTreeIter *child_iter); +|# + +(defcfun gtk-tree-model-filter-convert-iter-to-child-iter :void + (filter g-object) + (child-iter (g-boxed-foreign tree-iter)) + (filter-iter (g-boxed-foreign tree-iter))) + +(defun tree-model-filter-convert-iter-to-child-iter (filter iter) + (let ((child-iter (make-instance 'tree-iter))) + (gtk-tree-model-filter-convert-iter-to-child-iter filter child-iter iter) + child-iter)) + +(export 'tree-model-filter-convert-iter-to-child-iter) + +#| +GtkTreePath *gtk_tree_model_filter_convert_child_path_to_path (GtkTreeModelFilter *filter, + GtkTreePath *child_path); + +GtkTreePath *gtk_tree_model_filter_convert_path_to_child_path (GtkTreeModelFilter *filter, + GtkTreePath *filter_path); +|# + +;; extras + +(defcfun gtk-tree-model-filter-refilter :void + (filter g-object)) + +(defun tree-model-filter-refilter (filter) + (gtk-tree-model-filter-refilter filter)) + +(export 'tree-model-filter-refilter) + +(defcfun gtk-tree-model-filter-clear-cache :void + (filter g-object)) + +(defun tree-model-filter-clear-cache (filter) + (gtk-tree-model-filter-clear-cache filter)) + +(export 'tree-model-filter-clear-cache) +