-class interpModel =
- let cols = new GTree.column_list in
- let id_col = cols#add Gobject.Data.string in
- let dsc_col = cols#add Gobject.Data.string in
- let interp_no_col = cols#add Gobject.Data.int in
- let tree_store = GTree.tree_store cols in
- let id_renderer = GTree.cell_renderer_text [], ["text", id_col] in
- let dsc_renderer = GTree.cell_renderer_text [], ["text", dsc_col] in
- let id_view_col = GTree.view_column ~renderer:id_renderer () in
- let dsc_view_col = GTree.view_column ~renderer:dsc_renderer () in
- fun tree_view choices ->
- object
- initializer
- tree_view#set_model (Some (tree_store :> GTree.model));
- ignore (tree_view#append_column id_view_col);
- ignore (tree_view#append_column dsc_view_col);
- let name_of_interp =
- (* try to find a reasonable name for an interpretation *)
- let idx = ref 0 in
- fun interp ->
- try
- List.assoc "0" interp
- with Not_found ->
- incr idx; string_of_int !idx
- in
- tree_store#clear ();
- let idx = ref ~-1 in
- List.iter
- (fun interp ->
- incr idx;
- let interp_row = tree_store#append () in
- tree_store#set ~row:interp_row ~column:id_col
- (name_of_interp interp);
- tree_store#set ~row:interp_row ~column:interp_no_col !idx;
- List.iter
- (fun (id, dsc) ->
- let row = tree_store#append ~parent:interp_row () in
- tree_store#set ~row ~column:id_col id;
- tree_store#set ~row ~column:dsc_col dsc;
- tree_store#set ~row ~column:interp_no_col !idx)
- interp)
- choices
-
- method get_interp_no tree_path =
- let iter = tree_store#get_iter tree_path in
- tree_store#get ~row:iter ~column:interp_no_col
- end
-
-let is_var_uri s =
- try
- String.sub s (String.length s - 4) 4 = ".var"
- with Invalid_argument _ -> false
-
-let non p x = not (p x)
-