From c6be8ac0cdf0c3c1f6e21d38e8a4b95e1d9b1839 Mon Sep 17 00:00:00 2001 From: Andrey Kutejko Date: Mon, 18 Jan 2010 00:03:42 +0200 Subject: [PATCH] tree-model-filter --- gtk/cl-gtk2-gtk.asd | 1 + gtk/gtk.tree-model-filter.lisp | 84 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 gtk/gtk.tree-model-filter.lisp 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) + -- 1.7.10.4