match href_callback with
| None -> ()
| Some f ->
- (match MatitaMisc.split href_value with
+ (match HExtlib.split href_value with
| [ uri ] -> f uri
| uris ->
let menu = GMenu.menu () in
(try Hashtbl.find ids_to_terms id with Not_found -> assert false)
method private string_of_node node =
- if node#hasAttributeNS ~namespaceURI:DomMisc.xlink_ns ~localName:href_ds
- then string_of_dom_node node
- else self#string_of_id_node node
+ if node#hasAttributeNS ~namespaceURI:DomMisc.helm_ns ~localName:xref_ds
+ then self#string_of_id_node node
+ else string_of_dom_node node
method private string_of_id_node node =
let get_id (node: Gdome.element) =
let xref_attr =
node#getAttributeNS ~namespaceURI:DomMisc.helm_ns ~localName:xref_ds
in
- xref_attr#to_string
+ List.hd (HExtlib.split ~sep:' ' xref_attr#to_string)
in
let id = get_id node in
let script = MatitaScript.instance () in
val mutable scrolledWin: GBin.scrolled_window option = None
(* scrolled window to which the sequentViewer is currently attached *)
val logo = (GMisc.image
- ~file:(BuildTimeConf.runtime_base_dir ^ "/logo/matita_medium.png") ()
+ ~file:(MatitaMisc.image_path "matita_medium.png") ()
:> GObj.widget)
val logo_with_qed = (GMisc.image
- ~file:(BuildTimeConf.runtime_base_dir ^ "/logo/matita_small.png") ()
+ ~file:(MatitaMisc.image_path "matita_small.png") ()
:> GObj.widget)
method load_logo =
let handle_error f =
try
f ()
- with exn -> fail (MatitaExcPp.to_string exn)
+ with exn ->
+ if not (Helm_registry.get_bool "matita.debug") then
+ fail (MatitaExcPp.to_string exn)
+ else raise exn
in
let handle_error' f = (fun () -> handle_error (fun () -> f ())) in
+ let load_easter_egg = lazy (
+ win#easterEggImage#set_file (MatitaMisc.image_path "meegg.png"))
+ in
object (self)
inherit scriptAccessor
*
* Use only these functions to switch between the tabs
*)
- method private _showList = win#mathOrListNotebook#goto_page 1
method private _showMath = win#mathOrListNotebook#goto_page 0
-
+ method private _showList = win#mathOrListNotebook#goto_page 1
+
method private back () =
try
self#_load (self#_historyPrev ())
(* loads a uri which can be a cic uri or an about:* uri
* @param uri string *)
method private _load ?(force=false) entry =
- try
+ handle_error (fun () ->
if entry <> current_entry || entry = `About `Current_proof || force then
begin
(match entry with
| `About `Current_proof -> self#home ()
| `About `Blank -> self#blank ()
- | `About `Us -> () (* TODO implement easter egg here :-] *)
+ | `About `Us -> self#egg ()
| `Check term -> self#_loadCheck term
| `Cic (term, metasenv) -> self#_loadTermCic term metasenv
| `Dir dir -> self#_loadDir dir
self#_loadList (List.map (fun r -> "obj",
UriManager.string_of_uri r) results));
self#setEntry entry
- end
- with exn -> fail (MatitaExcPp.to_string exn)
+ end)
method private blank () =
self#_showMath;
failwith "not implemented _loadCheck";
self#_showMath
+ method private egg () =
+ win#mathOrListNotebook#goto_page 2;
+ Lazy.force load_easter_egg
+
method private home () =
self#_showMath;
match self#script#status.proof_status with
| Proof (uri, metasenv, bo, ty) ->
- let name = UriManager.name_of_uri (MatitaMisc.unopt uri) in
+ let name = UriManager.name_of_uri (HExtlib.unopt uri) in
let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], []) in
self#_loadObj obj
| Incomplete_proof ((uri, metasenv, bo, ty), _) ->
- let name = UriManager.name_of_uri (MatitaMisc.unopt uri) in
+ let name = UriManager.name_of_uri (HExtlib.unopt uri) in
let obj = Cic.CurrentProof (name, metasenv, bo, ty, [], []) in
self#_loadObj obj
| _ -> self#blank ()
(** this is what the browser does when you enter a string an hit enter *)
method loadInput txt =
- let txt = MatitaMisc.trim_blanks txt in
+ let txt = HExtlib.trim_blanks txt in
let fix_uri txt =
UriManager.string_of_uri
(UriManager.strip_xpointer (UriManager.uri_of_string txt))