X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FgTopLevel%2FtermEditor.ml;h=db637554f249e8d4fe9bfee54ccdb516ac4b81ca;hb=d3c72d6856cd185e5b3e9f2e8b928b78c7031ed1;hp=310efd176b0623693e855339fdffa619d53044e8;hpb=bac72fcaa876137ab7a5630e0c1badc2a627dce8;p=helm.git diff --git a/helm/gTopLevel/termEditor.ml b/helm/gTopLevel/termEditor.ml index 310efd176..db637554f 100644 --- a/helm/gTopLevel/termEditor.ml +++ b/helm/gTopLevel/termEditor.ml @@ -33,6 +33,8 @@ (* *) (******************************************************************************) +open Printf + (* A WIDGET TO ENTER CIC TERMS *) class type term_editor = @@ -46,45 +48,48 @@ class type term_editor = 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 mqi_handle ?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 + (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 +98,17 @@ 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 = + Disambiguate'.disambiguate_term mqi_handle context metasenv + (input#buffer#get_text ()) !environment + in + environment := environment'; + (metasenv, expr) + + method environment = environment end let term_editor = new term_editor_impl end -;; +