match self#currentCicUri with
| Some uri -> self#load (`Metadata (`Deps (`Back, uri)))
| None -> ());
+ connect_menu_item win#browserCloseMenuItem (fun () ->
+ let my_id = Oo.id self in
+ cicBrowsers := List.filter (fun b -> Oo.id b <> my_id) !cicBrowsers;
+ win#toplevel#misc#hide(); win#toplevel#destroy ());
(* remove hbugs *)
(*
connect_menu_item win#hBugsTutorsMenuItem (fun () ->
Lazy.force load_easter_egg
method private redraw_gviz ?center_on () =
- let tmpfile, oc = Filename.open_temp_file "matita" ".dot" in
- let fmt = Format.formatter_of_out_channel oc in
- MetadataDeps.DepGraph.render fmt gviz_graph;
- close_out oc;
- gviz#load_graph_from_file ~gviz_cmd:"tred | dot" tmpfile;
- (match center_on with
- | None -> ()
- | Some uri -> gviz#center_on_href (UriManager.string_of_uri uri));
- HExtlib.safe_remove tmpfile
+ if Sys.command "which dot" = 0 then
+ let tmpfile, oc = Filename.open_temp_file "matita" ".dot" in
+ let fmt = Format.formatter_of_out_channel oc in
+ MetadataDeps.DepGraph.render fmt gviz_graph;
+ close_out oc;
+ gviz#load_graph_from_file ~gviz_cmd:"tred | dot" tmpfile;
+ (match center_on with
+ | None -> ()
+ | Some uri -> gviz#center_on_href (UriManager.string_of_uri uri));
+ HExtlib.safe_remove tmpfile
+ else
+ MatitaGtkMisc.report_error ~title:"graphviz error"
+ ~message:("Graphviz is not installed but is necessary to render "^
+ "the graph of dependencies amoung objects. Please install it.")
+ ~parent:win#toplevel ()
method private dependencies direction uri () =
let dbd = LibraryDb.instance () in
self#_showGviz
method private tex () =
- let text = String.concat "\n"
- (List.map (fun (k,vs) -> k ^ "\t" ^ String.concat ", " vs)
- (Utf8Macro.pp_table ()))
- in
- self#_loadText text
+ let b = Buffer.create 1000 in
+ Printf.bprintf b "UTF-8 equivalence classes (rotate with ALT-L):\n\n";
+ List.iter
+ (fun l ->
+ List.iter (fun sym ->
+ Printf.bprintf b " %s" (Glib.Utf8.from_unichar sym)
+ ) l;
+ Printf.bprintf b "\n";
+ )
+ (List.sort
+ (fun l1 l2 -> compare (List.hd l1) (List.hd l2))
+ (Virtuals.get_all_eqclass ()));
+ Printf.bprintf b "\n\nVirtual keys (trigger with ALT-L):\n\n";
+ List.iter
+ (fun tag, items ->
+ Printf.bprintf b " %s:\n" tag;
+ List.iter
+ (fun names, symbol ->
+ Printf.bprintf b " \t%s\t%s\n"
+ (Glib.Utf8.from_unichar symbol)
+ (String.concat ", " names))
+ (List.sort
+ (fun (_,a) (_,b) -> compare a b)
+ items);
+ Printf.bprintf b "\n")
+ (List.sort
+ (fun (a,_) (b,_) -> compare a b)
+ (Virtuals.get_all_virtuals ()));
+ self#_loadText (Buffer.contents b)
method private _loadText text =
searchText#source_buffer#set_text text;
match self#script#grafite_status.proof_status with
| Proof (uri, metasenv, _subst, bo, ty, attrs) ->
let name = UriManager.name_of_uri (HExtlib.unopt uri) in
- let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], attrs) in
+ let obj = Cic.CurrentProof (name, metasenv, Lazy.force bo, ty, [], attrs) in
self#_loadObj obj
| Incomplete_proof { proof = (uri, metasenv, _subst, bo, ty, attrs) } ->
let name = UriManager.name_of_uri (HExtlib.unopt uri) in
- let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], attrs) in
+ let obj = Cic.CurrentProof (name, metasenv, Lazy.force bo, ty, [], attrs) in
self#_loadObj obj
| _ -> self#blank ()