X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2Fmatita.ml;h=dd813debeff745fa449ab42f57a396a1664a7ca2;hb=56415e42c04f40e9c8f7cfc59a3a3d87c3d373f7;hp=530e477a8f45bcb319f1bfee256d7bd859f3f672;hpb=cc465115cdeea9819f43a5ad219b07c4f928c43a;p=helm.git diff --git a/helm/matita/matita.ml b/helm/matita/matita.ml index 530e477a8..dd813debe 100644 --- a/helm/matita/matita.ml +++ b/helm/matita/matita.ml @@ -28,12 +28,18 @@ open MatitaGtkMisc (** {2 Internal status} *) (* TODO Zack: may be current_proofs if we want an MDI interface *) -let (current_proof: MatitaProof.proof option ref) = ref None +let (get_proof, set_proof, has_proof) = + let (current_proof: MatitaTypes.proof option ref) = ref None in + ((fun () -> + match !current_proof with + | Some proof -> proof + | None -> assert false), + (fun proof -> current_proof := Some proof), + (fun () -> !current_proof <> None)) (** {2 Settings} *) -let untitled_con_uri = UriManager.uri_of_string "cic:/untitled.con" -let untitled_def_uri = UriManager.uri_of_string "cic:/untitled.def" +let debug_print = MatitaTypes.debug_print (** {2 Initialization} *) @@ -47,15 +53,25 @@ let disambiguator = ~chooseUris:(interactive_user_uri_choice ~gui) ~chooseInterp:(interactive_interp_choice ~gui) () +let new_proof proof = + (* TODO Zack: high level function which create a new proof object and register + * to it the widgets which must be refreshed upon status changes *) +(* proof#status#attach ... *) + proof#status#notify (); + set_proof proof +let interpreter = + new MatitaInterpreter.interpreter + ~disambiguator ~console:gui#console ~get_proof ~new_proof () (** quit program, possibly asking for confirmation *) let quit () = GMain.Main.quit () let _ = gui#setQuitCallback quit; + gui#setPhraseCallback interpreter#evalPhrase; gui#main#debugMenu#misc#hide (); ignore (gui#main#newProofMenuItem#connect#activate (fun _ -> - if (!current_proof <> None) && + if has_proof () && not (ask_confirmation ~gui ~msg:("Starting a new proof will abort current one,\n" ^ "are you sure you want to continue?") @@ -67,9 +83,9 @@ let _ = let (env, metasenv, term) = disambiguator#disambiguateTerm (Stream.of_string input) in - prerr_endline ("nuova prova: " ^ CicPp.ppterm term) - (* TODO Zack: FINQUI *) - )) + let proof = MatitaProof.proof ~typ:term ~metasenv () in + new_proof proof; + debug_print ("new proof, goal is: " ^ CicPp.ppterm term))) (** *) let _ = @@ -99,6 +115,8 @@ let _ = addDebugItem "multi line text input" (fun _ -> prerr_endline (ask_text ~gui ~title:"title" ~multiline:true ~msg:"message" ())); + addDebugItem "dump proof status to stdout" (fun _ -> + print_endline ((get_proof ())#status#toString)); end (** *)