object (self)
inherit GMathViewAux.multi_selection_math_view obj
- val mutable href_callback: (UriManager.uri -> unit) option = None
+ val mutable href_callback: (string -> unit) option = None
method set_href_callback f = href_callback <- f
initializer
let uri =
elt#getAttributeNS ~namespaceURI:Misc.xlink_ns ~localName:href
in
- f (UriManager.uri_of_string (uri#to_string)))
+ f (uri#to_string))
| Some elt -> ignore (self#action_toggle elt)
| None -> ()))
method private choose_selection gdome_elt =
class cicBrowser ~(history:string MatitaMisc.history) () =
let term_RE = Pcre.regexp "^term:(.*)" in
+ let trailing_slash_RE = Pcre.regexp "/$" in
let gui = MatitaGui.instance () in
let win = gui#newBrowserWin () in
let toplevel = win#toplevel in
GMain.quit ();
false));
mathView#set_href_callback (Some (fun uri ->
- handle_error (fun () -> self#_loadUri (UriManager.string_of_uri uri))));
+ handle_error (fun () -> self#_loadUri uri)));
self#_loadUri ~add_to_history:false blank_uri;
toplevel#show ();
| uri when uri = current_proof_uri -> self#home ()
| uri when Pcre.pmatch ~rex:term_RE uri ->
self#loadTerm (`String (Pcre.extract ~rex:term_RE uri).(1))
+ | uri when Pcre.pmatch ~rex:trailing_slash_RE uri -> self#loadDir uri
| _ -> self#loadUriManagerUri (UriManager.uri_of_string uri));
self#setUri uri;
if add_to_history then history#add uri
method loadUri uri =
handle_error (fun () -> self#_loadUri ~add_to_history:true uri)
- method private blank () = mathView#load_root MatitaMisc.empty_mathml
+ method private blank () =
+ mathView#load_root (MatitaMisc.empty_mathml ())#get_documentElement
method private home () =
if currentProof#onGoing () then
let (obj, _) = CicEnvironment.get_obj CicUniv.empty_ugraph uri in
self#loadObj obj
+ method private loadDir dir =
+ let mathml = MatitaMisc.empty_boxml () in
+ let content = Http_getter.ls dir in
+ let root = mathml#get_documentElement in
+ let new_box_elt name =
+ mathml#createElementNS ~namespaceURI:(Some Misc.boxml_ns)
+ ~qualifiedName:(Gdome.domString ("b:" ^ name))
+ in
+ let new_text content = mathml#createTextNode (Gdome.domString content) in
+ let b_v = new_box_elt "v" in
+ List.iter
+ (fun item ->
+ let b_text = new_box_elt "text" in
+ let uri, elt =
+ match item with
+ | Http_getter_types.Ls_section subdir ->
+ (dir ^ subdir ^ "/"), (new_text (subdir ^ "/"))
+ | Http_getter_types.Ls_object obj ->
+ (dir ^ obj.Http_getter_types.uri),
+ (new_text obj.Http_getter_types.uri)
+ in
+ b_text#setAttributeNS ~namespaceURI:(Some Misc.xlink_ns)
+ ~qualifiedName:(Gdome.domString "xlink:href")
+ ~value:(Gdome.domString uri);
+ ignore (b_v#appendChild ~newChild:(b_text :> Gdome.node));
+ ignore (b_text#appendChild ~newChild:(elt :> Gdome.node)))
+ content;
+ ignore (root#appendChild ~newChild:(b_v :> Gdome.node));
+(* Misc.domImpl#saveDocumentToFile ~doc:mathml ~name:"pippo" (); *)
+ mathView#load_root ~root:root
+
method private setUri uri =
win#browserUri#set_text uri;
current_uri <- uri