X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=matita%2Fmatita%2FmatitaMathView.ml;h=390257422968e77420d0374890e335342b898d22;hb=1eb848417fefd0ef7436d4a89e59535baf9632c7;hp=455d037b9b4b6e1a625ff141e9d1c117da395ff7;hpb=894d518aa760c9f816ddb0dc2b3fa88e1fe20a94;p=helm.git diff --git a/matita/matita/matitaMathView.ml b/matita/matita/matitaMathView.ml index 455d037b9..390257422 100644 --- a/matita/matita/matitaMathView.ml +++ b/matita/matita/matitaMathView.ml @@ -107,20 +107,19 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () = let win goal_switch = let w = GBin.scrolled_window ~hpolicy:`AUTOMATIC ~vpolicy:`ALWAYS - ~shadow_type:`IN ~show:true () - in + ~shadow_type:`IN ~show:true () in let reparent () = scrolledWin <- Some w; - match cicMathView#misc#parent with - | None -> w#add cicMathView#coerce - | Some parent -> - let parent = - match cicMathView#misc#parent with - None -> assert false - | Some p -> GContainer.cast_container p - in - parent#remove cicMathView#coerce; - w#add cicMathView#coerce + (match cicMathView#misc#parent with + | None -> () + | Some parent -> + let parent = + match cicMathView#misc#parent with + None -> assert false + | Some p -> GContainer.cast_container p + in + parent#remove cicMathView#coerce); + w#add cicMathView#coerce in goal2win <- (goal_switch, reparent) :: goal2win; w#coerce @@ -191,7 +190,24 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () = cicMathView#load_root ~root); (try cicMathView#set_selection None; - List.assoc goal_switch goal2win () + List.assoc goal_switch goal2win (); + (match cicMathView#misc#parent with + None -> assert false + | Some p -> + (* The text widget dinamycally inserts the text in a separate + thread. We need to wait for it to terminate before we can + move the scrollbar to the end *) + while Glib.Main.pending()do ignore(Glib.Main.iteration false); done; + let w = + new GBin.scrolled_window + (Gobject.try_cast p#as_widget "GtkScrolledWindow") in + (* The double change upper/lower is to trigger the emission of + changed :-( *) + w#hadjustment#set_value w#hadjustment#upper; + w#hadjustment#set_value w#hadjustment#lower; + w#vadjustment#set_value w#vadjustment#lower; + w#vadjustment#set_value + (w#vadjustment#upper -. w#vadjustment#page_size)); with Not_found -> assert false) method goto_sequent: 'status. #ApplyTransformation.status as 'status -> int -> unit @@ -205,7 +221,6 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () = in notebook#goto_page page; self#render_page status ~page ~goal_switch - end let blank_uri = BuildTimeConf.blank_uri @@ -227,12 +242,12 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) let dir_RE = Pcre.regexp "^cic:((/([^/]+/)*[^/]+(/)?)|/|)$" in let is_uri txt = Pcre.pmatch ~rex:uri_RE txt in let is_dir txt = Pcre.pmatch ~rex:dir_RE txt in - let gui = MatitaMisc.get_gui () in + let _gui = MatitaMisc.get_gui () in let win = new MatitaGeneratedGui.browserWin () in let _ = win#browserUri#misc#grab_focus () in let gviz = LablGraphviz.graphviz ~packing:win#graphScrolledWin#add () in let searchText = - GSourceView2.source_view ~auto_indent:false ~editable:false () + GSourceView3.source_view ~auto_indent:false ~editable:false () in let _ = win#scrolledwinContent#add (searchText :> GObj.widget); @@ -318,7 +333,9 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) HExtlib.safe_remove filename in object (self) - val mutable gviz_uri = NReference.reference_of_string "cic:/dummy.dec"; + val mutable gviz_uri = + let uri = NUri.uri_of_string "cic:/dummy/dec.con" in + NReference.reference_of_spec uri NReference.Decl; val dep_contextual_menu = GMenu.menu () @@ -469,8 +486,8 @@ class cicBrowser_impl ~(history:MatitaTypes.mathViewer_entry MatitaMisc.history) method private redraw_gviz ?center_on () = if Sys.command "which dot" = 0 then let tmpfile, oc = Filename.open_temp_file "matita" ".dot" in - let fmt = Format.formatter_of_out_channel oc in - (* MATITA 1.0 MetadataDeps.DepGraph.render fmt gviz_graph;*) + (* MATITA 1.0 let fmt = Format.formatter_of_out_channel oc in + MetadataDeps.DepGraph.render fmt gviz_graph;*) close_out oc; gviz#load_graph_from_file ~gviz_cmd:"tred | dot" tmpfile; (match center_on with