let foldable_tree ?(depth = (-1)) ?persistent_as_container
?(separators = ( fun _ _ _ -> None ))
tree elements container
=
let rec aux t l container d =
let folded = d > depth in
let (but,com,kid) = elements t l folded in
List.iter
(fun { LTree.content = t ; LTree.children = l } ->
kid#add_common ?before:None
((aux t l kid (succ d)) :> AXOWidgets.common ))
l ;
let b = new block_foldable ~folded ?persistent_as_container but com kid in
LOption.cb_on_opted com#add_common (separators t l folded) ;
b
in aux (LTree.get_content tree) (LTree.get_children tree) container 0