]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/gTopLevel/termEditor.ml
ocaml 3.09 transition
[helm.git] / helm / gTopLevel / termEditor.ml
index 310efd176b0623693e855339fdffa619d53044e8..1b9986caa294184335c6bb697be47b35a6e0a26a 100644 (file)
  * http://cs.unibo.it/helm/.
  *)
 
-(******************************************************************************)
-(*                                                                            *)
-(*                               PROJECT HELM                                 *)
-(*                                                                            *)
-(*                Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>               *)
-(*                                 06/01/2002                                 *)
-(*                                                                            *)
-(*                                                                            *)
-(******************************************************************************)
+(*****************************************************************************)
+(*                                                                           *)
+(*                              PROJECT HELM                                 *)
+(*                                                                           *)
+(*               Claudio Sacerdoti Coen <sacerdot@cs.unibo.it>               *)
+(*                                06/01/2002                                 *)
+(*                                                                           *)
+(*                                                                           *)
+(*****************************************************************************)
+
+open Printf
 
 (* A WIDGET TO ENTER CIC TERMS *)
 
@@ -42,49 +44,53 @@ class type term_editor =
    method get_as_string : string
    method get_metasenv_and_term :
      context:Cic.context ->
-     metasenv:Cic.metasenv -> Cic.metasenv * Cic.term
+     metasenv:Cic.metasenv -> 
+     Cic.metasenv * Cic.term * CicUniv.universe_graph
    method reset : unit
    (* The input of set_term is unquoted *)
    method set_term : string -> unit
-   method id_to_uris : Disambiguate.domain_and_interpretation ref
+   method environment : DisambiguatingParser.EnvironmentP3.t ref
  end
-;;
-
-let empty_id_to_uris = ([],function _ -> None);;
 
-module Make(C:Disambiguate.Callbacks) =
+module Make(C:DisambiguateTypes.Callbacks) =
   struct
 
-   module Disambiguate' = Disambiguate.Make(C);;
+   module Disambiguate' = DisambiguatingParser.Make(C);;
 
-   class term_editor_impl mqi_handle ?packing ?width ?height ?isnotempty_callback
-    ?share_id_to_uris_with () : term_editor
+   class term_editor_impl ~(dbd:Mysql.dbd) ?packing ?width ?height
+    ?isnotempty_callback ?share_environment_with () : term_editor
    =
-    let id_to_uris =
-     match share_id_to_uris_with with
-        None -> ref empty_id_to_uris
-      | Some obj -> obj#id_to_uris
+    let environment =
+     match share_environment_with with
+        None -> ref (*DisambiguateTypes.empty_environment*)
+          (DisambiguatingParser.EnvironmentP3.of_string
+            DisambiguatingParser.EnvironmentP3.empty)
+      | Some obj -> obj#environment
     in
-    let input = GEdit.text ~editable:true ?width ?height ?packing () in
+    let input = GText.view ~editable:true ?width ?height ?packing () in
     let _ =
      match isnotempty_callback with
         None -> ()
       | Some callback ->
-         ignore(input#connect#changed
-          (function () -> callback (input#length > 0)))
+         ignore(input#buffer#connect#changed
+          (function () -> callback (input#buffer#char_count > 0)))
     in
      object(self)
+
       method coerce = input#coerce
+
       method reset =
-       input#delete_text 0 input#length
+       input#buffer#delete input#buffer#start_iter input#buffer#end_iter
       (* CSC: txt is now a string, but should be of type Cic.term *)
+
       method set_term txt =
        self#reset ;
-       ignore ((input#insert_text txt) ~pos:0)
+       ignore (input#buffer#insert txt)
+
       (* CSC: this method should disappear *)
       (* get_as_string returns the unquoted string *)
-      method get_as_string =
-       input#get_chars 0 input#length
+      method get_as_string = input#buffer#get_text ()
+
       method get_metasenv_and_term ~context ~metasenv =
        let name_context =
         List.map
@@ -93,21 +99,23 @@ module Make(C:Disambiguate.Callbacks) =
            | None -> None
          ) context
        in
-        let lexbuf = Lexing.from_string (input#get_chars 0 input#length) in
-         let dom,mk_metasenv_and_expr =
-          CicTextualParserContext.main
-           ~context:name_context ~metasenv CicTextualLexer.token lexbuf
-         in
-          let id_to_uris',metasenv,expr =
-           Disambiguate'.disambiguate_input mqi_handle
-            context metasenv dom mk_metasenv_and_expr ~id_to_uris:!id_to_uris
-          in
-           id_to_uris := id_to_uris' ;
-           metasenv,expr
-      method id_to_uris = id_to_uris
+        let environment',metasenv,expr,ugraph =
+         match
+          Disambiguate'.disambiguate_term ~dbd ~context ~metasenv
+           (input#buffer#get_text ()) ~initial_ugraph:CicUniv.empty_ugraph
+           ~aliases:!environment
+         with
+            [environment',metasenv,expr,u] -> environment',metasenv,expr,u
+          | _ -> assert false
+        in
+        environment := environment';
+        (metasenv, expr,ugraph) 
+         (* TASSI: FIXME ?are we sure we have to keep this?  *)
+
+      method environment = environment
    end
 
    let term_editor = new term_editor_impl
 
 end
-;;
+