+ (* Return os(es) in the tree, if any. The root directory of the
+ * tree looks like this:
+ *
+ * \ Top (OS ...) # usually only one, but there can be zero or > 1
+ * \ Top (OS ...)
+ * \ Top (Volume ...)
+ * \ TopWinReg
+ * \ TopWinReg
+ *
+ * This returns only the Top (OS ...) entries. See also #add_top_level_os
+ * method.
+ *)
+ method oses =
+ match model#get_iter_first with
+ | None -> []
+ | Some row ->
+ let rec loop acc =
+ let acc =
+ match (self#get_hdata row).content with
+ | Top (OS os) -> os :: acc
+ | _ -> acc in
+ if model#iter_next row then
+ loop acc
+ else
+ List.rev acc
+ in
+ loop []
+