X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fmatita%2FmatitaMathView.ml;h=e572f0982f80d7b6cb1d5d2ddf9b0697f05999d6;hb=6187b40af194fb960d91653682a0eb2096f20f3b;hp=7bf464a9d8390b8fea4783e6cd93220a1a4398af;hpb=ef9ec8cb57d15426a96fe40d056eb07804753bb9;p=helm.git diff --git a/helm/matita/matitaMathView.ml b/helm/matita/matitaMathView.ml index 7bf464a9d..e572f0982 100644 --- a/helm/matita/matitaMathView.ml +++ b/helm/matita/matitaMathView.ml @@ -265,12 +265,7 @@ exception Browser_failure of string let cicBrowsers = ref [] -class cicBrowser - ~(disambiguator:MatitaTypes.disambiguator) - ~(currentProof:MatitaTypes.currentProof) - ~(history:string MatitaMisc.history) - () -= +class cicBrowser ~(history:string MatitaMisc.history) () = let term_RE = Pcre.regexp "^term:(.*)" in let gui = MatitaGui.instance () in let win = gui#newBrowserWin () in @@ -286,24 +281,34 @@ class cicBrowser with exn -> fail (sprintf "Uncaught exception:\n%s" (Printexc.to_string exn)) in + let handle_error' f = fun () -> handle_error f in (* used in callbacks *) object (self) initializer - ignore (win#browserUri#connect#activate (fun () -> - self#_loadUri win#browserUri#text)); - ignore (win#browserHomeButton#connect#clicked (fun () -> - self#_loadUri current_proof_uri)); - ignore (win#browserRefreshButton#connect#clicked self#refresh); - ignore (win#browserBackButton#connect#clicked self#back); - ignore (win#browserForwardButton#connect#clicked self#forward); + ignore (win#browserUri#connect#activate (handle_error' (fun () -> + self#_loadUri win#browserUri#text))); + ignore (win#browserHomeButton#connect#clicked (handle_error' (fun () -> + self#_loadUri current_proof_uri))); + ignore (win#browserRefreshButton#connect#clicked + (handle_error' self#refresh)); + ignore (win#browserBackButton#connect#clicked (handle_error' self#back)); + ignore (win#browserForwardButton#connect#clicked + (handle_error' self#forward)); ignore (win#toplevel#event#connect#delete (fun _ -> let my_id = Oo.id self in cicBrowsers := List.filter (fun b -> Oo.id b <> my_id) !cicBrowsers; + if !cicBrowsers = [] && + Helm_registry.get "matita.mode" = "cicbrowser" + then + GMain.quit (); false)); mathView#set_href_callback (Some (fun uri -> handle_error (fun () -> self#_loadUri (UriManager.string_of_uri uri)))); self#_loadUri ~add_to_history:false blank_uri; toplevel#show (); + val disambiguator = MatitaDisambiguator.instance () + val currentProof = MatitaProof.instance () + val mutable current_uri = "" val mutable current_infos = None val mutable current_mathml = None @@ -418,10 +423,10 @@ let sequents_viewer ~(notebook:GPack.notebook) = new sequents_viewer ~notebook ~sequent_viewer ~set_goal () -let cicBrowser ~disambiguator ~currentProof () = +let cicBrowser () = let size = BuildTimeConf.browser_history_size in let rec aux history = - let browser = new cicBrowser ~disambiguator ~currentProof ~history () in + let browser = new cicBrowser ~history () in let win = browser#win in ignore (win#browserNewButton#connect#clicked (fun () -> let history = @@ -442,13 +447,12 @@ let cicBrowser ~disambiguator ~currentProof () = let refresh_all_browsers () = List.iter (fun b -> b#refresh ()) !cicBrowsers -class mathViewer ~disambiguator ~currentProof = +class mathViewer = object method checkTerm (src:MatitaTypes.term_source) = - let browser = cicBrowser ~disambiguator ~currentProof () in - browser#loadTerm src + (cicBrowser ())#loadTerm src end -let mathViewer ~disambiguator ~currentProof () = - new mathViewer ~disambiguator ~currentProof +let mathViewer () = new mathViewer +let instance = MatitaMisc.singleton mathViewer