Hi there, There's was some major breakthrough today on liblarch because I finally rewrote completely liblarch-gtk to be a simple wrapper around liblarch (and not a thick stateful translation layer). I think that that step alone will probably solve most of the bug we currently have in the treeview. treemodel.py was more than 500 LOC, it is now 200, license included. I tested multiple parents : it seems to work fine ! Awesome :-)
There is still some little problems related to expand/collapse. It seems that children status is not yet well handled (and I think it's a liblarch bug because it seems that parent nodes are not updated when children are modified. That's a signal test to implement !) So, due to popular demand : What is liblarch ? Why liblarch ? It was discovered that, in the filteredtree stuffs, as soon as a bug was fixed somewhere, another one was popping up elsewhere. Often, it was not clear whether the bug was in Tree, FilteredTree, the TaskTreeModel or in the TreeView. In fact, I don't see how we can hope to fix those bug in trunk with the current state of the trunk. I then decided to do a generic library for Acyclic directed graphs (aka Tree where nodes can have multiple parents), supporting filters and having a dedicated gtk interface for the gtk.TreeView. This library would be covered by a test suite. Basically, you have a Tree() that contains TreeNode() and Filters(). You modify the Tree() directly but you can only observe it through a ViewTree(). Each Tree() can have any number of ViewTree() you want. A ViewTree() can be filtered using Filters() that are part of the Tree(). Name come from "How to recognize a tree : lesson nbr 1, the larch" (which is a monty pythons flying circus episode) Liblarch developement is test based and writing the tests first allowed me to fix a dozen of existing bugs in FilteredTree. Now, the gtk UI will really be only a view accessing a liblarch ViewTree that could be accessed by anything else. Another benefits is that now, the "real" tree (without filter) of a view of a tree with filters are, conceptually, exactly the same, accessed by the same API. Last but not least, liblarch-gtk automatically handle all the gtk.treemodel/treeview stuffs. Meaning that creating a gtk.widget displaying a tree is only a matter of building a dic which contains the description of the columns you want to see. (gtk/browser/treeview_factory.py) Liblarch is now used for the tasks tree but, also, for the tags tree. Sorry for not communicating better about that ! Lionel _______________________________________________ Mailing list: https://launchpad.net/~gtg-contributors Post to : [email protected] Unsubscribe : https://launchpad.net/~gtg-contributors More help : https://help.launchpad.net/ListHelp

