X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2FgTopLevel%2Fhbugs.ml;h=c8947c54db73f2ff08d84bfdf492b5c42b82fc7d;hb=4167cea65ca58897d1a3dbb81ff95de5074700cc;hp=753f3fc787e89d8cdc3690de376700ef16fb8c68;hpb=bac72fcaa876137ab7a5630e0c1badc2a627dce8;p=helm.git diff --git a/helm/gTopLevel/hbugs.ml b/helm/gTopLevel/hbugs.ml index 753f3fc78..c8947c54d 100644 --- a/helm/gTopLevel/hbugs.ml +++ b/helm/gTopLevel/hbugs.ml @@ -31,99 +31,105 @@ open Printf;; let debug_print = let debug = true in - fun s -> prerr_endline (sprintf "DEBUG: %s" s) + fun s -> prerr_endline (sprintf "HBUGS DEBUG: %s" s) ;; exception NoProofInProgress;; let hbugs_client = ref None let use_hint_callback = ref ignore +let describe_hint_callback = ref ignore + +let set_describe_hint_callback c = describe_hint_callback := c let quit () = - match !hbugs_client with - | Some c -> c#unregisterFromBroker () - | None -> () + match !hbugs_client with + | Some c -> c#unregisterFromBroker () + | None -> () let hbugs_enabled = ref false let get_hbugs_client () = - match !hbugs_client with - | Some c -> c - | None -> assert false + match !hbugs_client with + | Some c -> c + | None -> assert false let disable () = - match !hbugs_client with None -> () | Some c -> c#hide () + match !hbugs_client with None -> () | Some c -> c#hide () - (** send current proof assistant state to hbugs broker *) let notify () = - try - if !hbugs_enabled then begin - let client = get_hbugs_client () in - let goal = - match !ProofEngine.goal with - | Some g -> g - | None -> raise NoProofInProgress - in - let (type_string, body_string) = - let (type_xml, body_xml) = ProofEngine.get_current_status_as_xml () in - (Xml.pp_to_string type_xml, Xml.pp_to_string body_xml) - in - let new_state = - (Misc.strip_xml_headings type_string, - Misc.strip_xml_headings body_string, - goal) - in - client#stateChange (Some new_state) - end - with NoProofInProgress -> () + try + if !hbugs_enabled then begin + let client = get_hbugs_client () in + let goal = + match !ProofEngine.goal with + | Some g -> g + | None -> raise NoProofInProgress + in + let (type_string, body_string) = + let (type_xml, body_xml) = ProofEngine.get_current_status_as_xml () in + (Xml.pp_to_string type_xml, Xml.pp_to_string body_xml) + in + let new_state = + (Misc.strip_xml_headings type_string, + Misc.strip_xml_headings body_string, + goal) + in + client#stateChange (Some new_state) + end + with NoProofInProgress -> () let clear () = if !hbugs_enabled then begin - let client = get_hbugs_client () in - client#stateChange None + let client = get_hbugs_client () in + client#stateChange None end let rec enable () = - (match !hbugs_client with - | None -> (* create an hbugs client and show its window *) - hbugs_client := - (try - Some (new Hbugs_client.hbugsClient - ~use_hint_callback:!use_hint_callback ()) - with e -> - prerr_endline (sprintf "Can't start HBugs client: %s" - (Printexc.to_string e)); - None); - (match !hbugs_client with - |Some client -> - client#show (); - client#subscribeAll () - | None -> ()) - | Some c -> (* show hbugs client window *) - c#show ()) + (match !hbugs_client with + | None -> (* create an hbugs client and show its window *) + hbugs_client := + (try + Some (new Hbugs_client.hbugsClient + ~use_hint_callback:!use_hint_callback + ~describe_hint_callback:!describe_hint_callback + ()) + with e -> + prerr_endline (sprintf "Can't start HBugs client: %s" + (Printexc.to_string e)); + None); + (match !hbugs_client with + |Some client -> + client#show (); + client#subscribeAll () + | None -> ()) + | Some c -> (* show hbugs client window *) + c#show ()) let toggle state = - if state <> !hbugs_enabled then (* status has been changed *) - (if state then enable () else disable ()); - hbugs_enabled := state + if state <> !hbugs_enabled then begin (* status has been changed *) + if state then enable () else disable (); + clear () + end; + hbugs_enabled := state module type Unit = sig end module Initialize (Tactics: InvokeTactics.Tactics) : Unit = struct let use_hint = function - | Use_ring_Luke -> Tactics.ring () - | Use_fourier_Luke -> Tactics.fourier () - | Use_reflexivity_Luke -> Tactics.reflexivity () - | Use_symmetry_Luke -> Tactics.symmetry () - | Use_assumption_Luke -> Tactics.assumption () - | Use_contradiction_Luke -> Tactics.contradiction () - | Use_exists_Luke -> Tactics.exists () - | Use_split_Luke -> Tactics.split () - | Use_left_Luke -> Tactics.left () - | Use_right_Luke -> Tactics.right () - | Use_apply_Luke term -> + | Use_ring -> Tactics.ring () + | Use_fourier -> Tactics.fourier () + | Use_reflexivity -> Tactics.reflexivity () + | Use_symmetry -> Tactics.symmetry () + | Use_assumption -> Tactics.assumption () + | Use_contradiction -> Tactics.contradiction () + | Use_exists -> Tactics.exists () + | Use_split -> Tactics.split () + | Use_left -> Tactics.left () + | Use_right -> Tactics.right () + | Use_apply term -> (* we remove the "cic:" prefix *) let term' = String.sub term 4 (String.length term - 4) in Tactics.apply ~term:term' () @@ -131,3 +137,7 @@ module Initialize (Tactics: InvokeTactics.Tactics) : Unit = let _ = use_hint_callback := use_hint end + +let start_web_services () = ignore (Unix.system "make -C ../hbugs/ start") +let stop_web_services () = ignore (Unix.system "make -C ../hbugs/ stop") +