X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FgTopLevel%2FtermEditor.ml;h=1b9986caa294184335c6bb697be47b35a6e0a26a;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=310efd176b0623693e855339fdffa619d53044e8;hpb=bac72fcaa876137ab7a5630e0c1badc2a627dce8;p=helm.git diff --git a/helm/gTopLevel/termEditor.ml b/helm/gTopLevel/termEditor.ml index 310efd176..1b9986caa 100644 --- a/helm/gTopLevel/termEditor.ml +++ b/helm/gTopLevel/termEditor.ml @@ -23,15 +23,17 @@ * http://cs.unibo.it/helm/. *) -(******************************************************************************) -(* *) -(* PROJECT HELM *) -(* *) -(* Claudio Sacerdoti Coen *) -(* 06/01/2002 *) -(* *) -(* *) -(******************************************************************************) +(*****************************************************************************) +(* *) +(* PROJECT HELM *) +(* *) +(* Claudio Sacerdoti Coen *) +(* 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 -;; +