]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/termViewer.ml
debian version 0.5.1-2
[helm.git] / helm / gTopLevel / termViewer.ml
index 192bbb413b6d203eddfc48c1faa06d3c22670af8..da7b6bdca762df7cb351d9385b0a38d00f9afccb 100644 (file)
@@ -33,7 +33,7 @@
 (*                                                                            *)
 (******************************************************************************)
 
-let use_stylesheets = ref true;;(* false performs the transformations in OCaml*)
+let use_stylesheets = ref false;;(* false performs the transformations in OCaml*)
 
 (* List utility functions *)
 exception Skip;;
@@ -147,9 +147,10 @@ class proof_viewer obj =
 
   inherit GMathViewAux.single_selection_math_view obj
 
-  initializer self#set_font_size 10
+(*   initializer self#set_font_size 10 *)
 
   val mutable current_infos = None
+  val mutable current_mml = None
 
   method make_sequent_of_selected_term =
    match self#get_selection with
@@ -202,6 +203,7 @@ class proof_viewer obj =
        ~explode_all:true uri acic ids_to_inner_sorts ids_to_inner_types
      in
       self#load_doc ~dom:mml ;
+      current_mml <- Some mml ;
       current_infos <-
        Some
         (ids_to_terms,ids_to_father_ids,ids_to_conjectures,ids_to_hypotheses) ;
@@ -210,23 +212,12 @@ class proof_viewer obj =
          Cic.ACurrentProof (id,idbody,n,conjectures,bo,ty,params) ->
            let time1 = Sys.time () in
            let content = 
-            Cic2content.acic2content 
-             (ref 0) ~name:(Some "prova") ~ids_to_inner_sorts
-             ~ids_to_inner_types bo in
-           let content2pres =
-             (Content2pres.proof2pres 
-               (function p -> 
-                 (Cexpr2pres.cexpr2pres_charcount 
-                    (Content_expressions.acic2cexpr ids_to_inner_sorts p)))) in
-           let pres = content2pres content in
+              Cic2content.annobj2content 
+                ~ids_to_inner_sorts ~ids_to_inner_types acic in
+           let pres = Content2pres.content2pres ~ids_to_inner_sorts content in
            let time2 = Sys.time () in
            (* prerr_endline ("Fine trasformazione:" ^ (string_of_float (time2 -. time1))); *)
-           let xmlpres =
-            Xml.xml_nempty "math"
-             ["xmlns","http://www.w3.org/1998/Math/MathML" ;
-              "xmlns:helm","http://www.cs.unibo.it/helm" ;
-              "xmlns:xlink","http://www.w3.org/1999/xlink"
-             ] (Mpresentation.print_mpres pres) in
+           let xmlpres = Mpresentation.print_mpres pres in
            let time25 = Sys.time () in
             (*
             prerr_endline ("FINE printing to stream:" ^ (string_of_float (time25 -. time2)));
@@ -235,12 +226,32 @@ class proof_viewer obj =
              prerr_endline ("FINE valutazione e printing dello stream:" ^ (string_of_float (time3 -. time25)));
             *)
            (try 
-             (* prerr_endline "(******** INIZIO DOM **********)"; *)
-             let mml = Xml2Gdomexmath.document_of_xml Misc.domImpl xmlpres in
+             prerr_endline "(******** INIZIO DOM **********)";
+             let mml = Xml2Gdome.document_of_xml Misc.domImpl xmlpres in
              let time3 = Sys.time () in
              (* ignore (Misc.domImpl#saveDocumentToFile mml "tmp1" ()); *)
-             (* prerr_endline "(******** FINE DOM **********)"; *)
-             self#load_doc ~dom:mml;
+             prerr_endline "(******** FINE DOM **********)";
+             (match current_mml with
+                 None ->
+                  let time1 = Sys.time () in
+                  self#load_doc ~dom:mml ;
+                  let time2 = Sys.time () in
+                  prerr_endline ("Loading and displaying the proof took " ^ string_of_float (time2 -. time1) ^ "seconds") ;
+                  current_mml <- Some mml
+               | Some current_mml' ->
+                  self#freeze ;
+                  let time1 = Sys.time () in
+                  XmlDiff.update_dom ~from:current_mml' mml ;
+                  let time2 = Sys.time () in
+                  prerr_endline ("XMLDIFF took " ^ string_of_float (time2 -. time1) ^ "seconds") ;
+                  self#thaw ;
+                  let time3 = Sys.time () in
+                  prerr_endline ("The refresh of the widget took " ^ string_of_float (time3 -. time2) ^ "seconds")
+                  ) ;
+(*
+              self#load_doc ~dom:mml ;
+              current_mml <- Some mml ;
+*)
              prerr_endline ("Fine loading:" ^ (string_of_float (time3 -. time2)))
             (*
              self#load_uri "tmp";