"\n" ^
GrafiteAstPp.pp_executable ~term_pp:(fun s -> s)
~lazy_term_pp:(fun _ -> assert false) ~obj_pp:(fun _ -> assert false)
- (GrafiteAst.Tactical (loc,
- GrafiteAst.Tactic (loc, GrafiteAst.Reduce (loc, kind, pat)),
- Some (GrafiteAst.Semicolon loc))) in
+ ~map_unicode_to_tex:(Helm_registry.get_bool
+ "matita.paste_unicode_as_tex")
+ (GrafiteAst.Tactic (loc,
+ Some (GrafiteAst.Reduce (loc, kind, pat)),
+ GrafiteAst.Semicolon loc)) in
(MatitaScript.current ())#advance ~statement () in
connect_menu_item copy gui#copy;
connect_menu_item normalize (reduction_action `Normalize);
let tactic_text_pattern = self#tactic_text_pattern_of_node node in
GrafiteAstPp.pp_tactic_pattern
~term_pp:(fun s -> s) ~lazy_term_pp:(fun _ -> assert false)
+ ~map_unicode_to_tex:(Helm_registry.get_bool
+ "matita.paste_unicode_as_tex")
tactic_text_pattern
| `Term -> self#tactic_text_of_node node
else string_of_dom_node node
let markup = CicNotationPres.render ids_to_uris pped_ast in
BoxPp.render_to_string text_width markup
*)
- ApplyTransformation.txt_of_cic_sequent_conclusion
+ let map_unicode_to_tex =
+ Helm_registry.get_bool "matita.paste_unicode_as_tex" in
+ ApplyTransformation.txt_of_cic_sequent_conclusion ~map_unicode_to_tex
text_width metasenv cic_sequent
method private pattern_of term context unsh_sequent =
ids_to_terms, ids_to_hypotheses, ids_to_father_ids,
Hashtbl.create 1, None));
if BuildTimeConf.debug then begin
- let name = "sequent_viewer.xml" in
+ let name =
+ "/tmp/sequent_viewer_" ^ string_of_int (Unix.getuid ()) ^ ".xml" in
HLog.debug ("load_sequent: dumping MathML to ./" ^ name);
ignore (domImpl#saveDocumentToFile ~name ~doc:mathml ())
end;
self#thaw
| _ ->
if BuildTimeConf.debug then begin
- let name = "cic_browser.xml" in
+ let name =
+ "/tmp/cic_browser_" ^ string_of_int (Unix.getuid ()) ^ ".xml" in
HLog.debug ("cic_browser: dumping MathML to ./" ^ name);
ignore (domImpl#saveDocumentToFile ~name ~doc:mathml ())
end;
_metasenv <- [];
self#script#setGoal None
- method load_sequents { proof = (_,metasenv,_,_) as proof; stack = stack } =
+ method load_sequents
+ { proof = (_,metasenv,_subst,_,_, _) as proof; stack = stack }
+ =
_metasenv <- metasenv;
pages <- 0;
let win goal_switch =
let load_easter_egg = lazy (
win#browserImage#set_file (MatitaMisc.image_path "meegg.png"))
in
- let load_coerchgraph () =
+ let load_coerchgraph tred () =
let str = CoercGraph.generate_dot_file () in
let filename, oc = Filename.open_temp_file "matita" ".dot" in
output_string oc str;
close_out oc;
- gviz#load_graph_from_file filename;
+ if tred then
+ gviz#load_graph_from_file ~gviz_cmd:"tred|dot" filename
+ else
+ gviz#load_graph_from_file filename;
HExtlib.safe_remove filename
in
object (self)
match self#currentCicUri with
| Some uri -> self#load (`Metadata (`Deps (`Back, uri)))
| None -> ());
+ connect_menu_item win#hBugsTutorsMenuItem (fun () ->
+ self#load (`HBugs `Tutors));
+ connect_menu_item win#browserUrlMenuItem (fun () ->
+ win#browserUri#entry#misc#grab_focus ());
(* fill dep graph contextual menu *)
let go_menu_item =
*
* Use only these functions to switch between the tabs
*)
- method private _showMath = win#mathOrListNotebook#goto_page 0
- method private _showList = win#mathOrListNotebook#goto_page 1
+ method private _showMath = win#mathOrListNotebook#goto_page 0
+ method private _showList = win#mathOrListNotebook#goto_page 1
+ method private _showGviz = win#mathOrListNotebook#goto_page 3
+ method private _showHBugs = win#mathOrListNotebook#goto_page 4
method private back () =
try
method private _load ?(force=false) entry =
handle_error (fun () ->
if entry <> current_entry || entry = `About `Current_proof || entry =
- `About `Coercions || force then
+ `About `Coercions || entry = `About `CoercionsFull || force then
begin
(match entry with
| `About `Current_proof -> self#home ()
| `About `Blank -> self#blank ()
| `About `Us -> self#egg ()
- | `About `Coercions -> self#coerchgraph ()
+ | `About `CoercionsFull -> self#coerchgraph false ()
+ | `About `Coercions -> self#coerchgraph true ()
| `Check term -> self#_loadCheck term
| `Cic (term, metasenv) -> self#_loadTermCic term metasenv
+ | `Development d -> self#_showDevelDeps d
| `Dir dir -> self#_loadDir dir
+ | `HBugs `Tutors -> self#_loadHBugsTutors
| `Metadata (`Deps ((`Fwd | `Back) as dir, uri)) ->
self#dependencies dir uri ()
| `Uri uri -> self#_loadUriManagerUri uri
| `Back -> MetadataDeps.DepGraph.inverse_deps ~dbd uri in
gviz_graph <- graph; (** XXX check this for memory consuption *)
self#redraw_gviz ~center_on:uri ();
- win#mathOrListNotebook#goto_page 3
+ self#_showGviz
- method private coerchgraph () =
- load_coerchgraph ();
- win#mathOrListNotebook#goto_page 3
+ method private coerchgraph tred () =
+ load_coerchgraph tred ();
+ self#_showGviz
method private home () =
self#_showMath;
match self#script#grafite_status.proof_status with
- | Proof (uri, metasenv, bo, ty) ->
+ | 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, [], []) in
+ let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], attrs) in
self#_loadObj obj
- | Incomplete_proof { proof = (uri, metasenv, bo, ty) } ->
+ | 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, [], []) in
+ let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], attrs) in
self#_loadObj obj
| _ -> self#blank ()
self#_loadObj obj
method private _loadDir dir =
- let content = Http_getter.ls dir in
+ let content = Http_getter.ls ~local:false dir in
let l =
List.fast_sort
Pervasives.compare
lastDir <- dir;
self#_loadList l
+ method private _loadHBugsTutors =
+ self#_showHBugs
+
method private setEntry entry =
win#browserUri#entry#set_text (MatitaTypes.string_of_entry entry);
current_entry <- entry
+ method private _showDevelDeps d =
+ match MatitamakeLib.development_for_name d with
+ | None -> ()
+ | Some devel ->
+ (match MatitamakeLib.dot_for_development devel with
+ | None -> ()
+ | Some fname ->
+ gviz#load_graph_from_file ~gviz_cmd:"tred | dot" fname;
+ self#_showGviz)
+
method private _loadObj obj =
(* showMath must be done _before_ loading the document, since if the
* widget is not mapped (hidden by the notebook) the document is not
`Uri (UriManager.uri_of_string ((*fix_uri*) txt))
| txt when is_dir txt -> `Dir (MatitaMisc.normalize_dir txt)
| txt when is_metadata txt -> `Metadata (parse_metadata txt)
+ | "hbugs:/tutors/" -> `HBugs `Tutors
| txt ->
(try
MatitaTypes.entry_of_string txt