Tim Wunder <[EMAIL PROTECTED]> writes:
> OK... So I :
> "Filter specific rows, based on data from a "visible column", a column 
> storing 
> booleans indicating whether the row should be filtered or not, or based on 
> the return value of a "visible function", which gets a model, iter and 
> user_data and returns a boolean indicating whether the row should be filtered 
> or not."
> Where do I do this filtering? I guess I'd need to create some sort of 
> "visible 
> function" that would make visible that which I want to filter??? 

Right ... well... you'll want to make that which you want to filter
*invisible*, but... ;)

When you create the GtkTreeModelFilter, you provide a function that fits the
signature of GtkTreeModelFilterVisibleFunc [1].  That is, make a new function
that has the same return value and arguments, and obeys the semantics
defined, then just use it's name to pass a pointer to the function for the
filtering algorithm to invoke later.  Something like:

    static gboolean
    _gnc_sxslr_filter_func(GtkTreeModel *model, GtkTreeIter *iter, gpointer 
data)
    {
        // filters out even rows
        // (I made up the function name; this is all handwavy... --jsled)
        gboolean is_even_row = gtk_tree_iter_get_row_number(model, iter) % 2 == 
0;
        return !is_even_row;
    }

    // [...]

    GtkTreeModel *filtered_model = gtk_tree_model_filter_new(existing_model, 
NULL);
    gtk_tree_model_filter_set_visible_func(filtered_model, 
_gnc_sxslr_filter_func, NULL, NULL);


This is very similar to the use of an Interface in object-oriented languages
... the function pointer can be thought of as a functional interface.


> And WTF is 
> an "iter"?

It represents a particular row in a particular model.  The 4th paragraph of
[2] has a bit more color.

Generally, you'll want to read [3] to get a sense of how the TreeModel and
TreeView (and the rest of the related classes/types) interact.  The design is
non-trival, but I don't really consider it overly complex, either. 

[1] 
http://library.gnome.org/devel/gtk/unstable/GtkTreeModelFilter.html#GtkTreeModelFilterVisibleFunc
[2] http://library.gnome.org/devel/gtk/unstable/GtkTreeModel.html#id3511622
[3] http://library.gnome.org/devel/gtk/unstable/TreeWidget.html

(All this is in your local devhelp, too.)


>> Color coding is always tricky ... in cultural significance ... in how it
[...]
> Yeah, I know. But it would look purdy if it had colors. ;)

Heh. :)

-- 
...jsled
http://asynchronous.org/ - a=jsled; b=asynchronous.org; echo [EMAIL PROTECTED]

Attachment: pgpgxrjZKMMw6.pgp
Description: PGP signature

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to