(** inherit from this class if you want to access current script *)
class scriptAccessor =
object (self)
- method private script = MatitaScript.current ()
+ method private script = get_matita_script_current ()
end
let cicBrowsers = ref []
page2goal <- [];
goal2page <- [];
goal2win <- [];
- _metasenv <- `Old [];
- self#script#setGoal None
+ _metasenv <- `Old []
method nload_sequents : 'status. #GrafiteTypes.status as 'status -> unit
= fun (status : #GrafiteTypes.status) ->
let goal_switch =
try List.assoc page page2goal with Not_found -> assert false
in
- self#script#setGoal (Some (goal_of_switch goal_switch));
self#render_page status ~page ~goal_switch))
method private render_page:
let module Pp = GraphvizPp.Dot in
let filename, oc = Filename.open_temp_file "matita" ".dot" in
let fmt = Format.formatter_of_out_channel oc in
- let status = (MatitaScript.current ())#grafite_status in
+ let status = (get_matita_script_current ())#grafite_status in
Pp.header
~name:"Hints"
~graph_type:"graph"
~name:"Coercions"
~node_attrs:["fontsize", "9"; "width", ".4"; "height", ".4"]
~edge_attrs:["fontsize", "10"] fmt;
- let status = (MatitaScript.current ())#grafite_status in
+ let status = (get_matita_script_current ())#grafite_status in
NCicCoercion.generate_dot_file status fmt;
Pp.trailer fmt;
Pp.raw "@." fmt;
method private _loadTermNCic term m s c =
let d = 0 in
let m = (0,([],c,term))::m in
- let status = (MatitaScript.current ())#grafite_status in
+ let status = (get_matita_script_current ())#grafite_status in
mathView#nload_sequent status m s d;
self#_showMath
self#_load entry;
self#_historyAdd entry
- (** {2 methods accessing underlying GtkMathView} *)
-
- method updateFontSize = mathView#set_font_size (MatitaMisc.get_current_font_size ())
-
(** {2 methods used by constructor only} *)
method win = win
let cicMathView_instance =
MatitaMisc.singleton default_cicMathView
-let default_sequentsViewer () =
- let gui = MatitaMisc.get_gui () in
+let default_sequentsViewer notebook =
let cicMathView = cicMathView_instance () in
- sequentsViewer ~notebook:gui#main#sequentsNotebook ~cicMathView ()
-let sequentsViewer_instance = MatitaMisc.singleton default_sequentsViewer
-
-let mathViewer () =
- object(self)
- method private get_browser reuse =
- if reuse then
- (match !cicBrowsers with
- | [] -> cicBrowser ()
- | b :: _ -> (b :> MatitaGuiTypes.cicBrowser))
- else
- (cicBrowser ())
+ sequentsViewer ~notebook ~cicMathView ()
+let sequentsViewer_instance =
+ let already_used = ref false in
+ fun notebook ->
+ if !already_used then assert false
+ else
+ (already_used := true;
+ default_sequentsViewer notebook)
- method show_entry ?(reuse=false) t = (self#get_browser reuse)#load t
-
- method screenshot status sequents metasenv subst (filename as ofn) =
- () (*MATITA 1.0
- let w = GWindow.window ~title:"screenshot" () in
- let width = 500 in
- let height = 2000 in
- let m = GMathView.math_view
- ~font_size:(MatitaMisc.get_current_font_size ()) ~width ~height
- ~packing:w#add
- ~show:true ()
- in
- w#show ();
- let filenames =
- HExtlib.list_mapi
- (fun (mno,_ as sequent) i ->
- let mathml =
- ApplyTransformation.nmml_of_cic_sequent
- status metasenv subst sequent
- in
- m#load_root ~root:mathml#get_documentElement;
- let pixmap = m#get_buffer in
- let pixbuf = GdkPixbuf.create ~width ~height () in
- GdkPixbuf.get_from_drawable ~dest:pixbuf pixmap;
- let filename =
- filename ^ "-raw" ^ string_of_int i ^ ".png"
- in
- GdkPixbuf.save ~filename ~typ:"png" pixbuf;
- filename,mno)
- sequents
- in
- let items =
- List.map (fun (x,mno) ->
- ignore(Sys.command
- (Printf.sprintf
- ("convert "^^
- " '(' -gravity west -bordercolor grey -border 1 label:%d ')' "^^
- " '(' -trim -bordercolor white -border 5 "^^
- " -bordercolor grey -border 1 %s ')' -append %s ")
- mno
- (Filename.quote x)
- (Filename.quote (x ^ ".label.png"))));
- x ^ ".label.png")
- filenames
- in
- let rec div2 = function
- | [] -> []
- | [x] -> [[x]]
- | x::y::tl -> [x;y] :: div2 tl
- in
- let items = div2 items in
- ignore(Sys.command (Printf.sprintf
- "convert %s -append %s"
- (String.concat ""
- (List.map (fun items ->
- Printf.sprintf " '(' %s +append ')' "
- (String.concat
- (" '(' -gravity center -size 10x10 xc: ')' ") items)) items))
- (Filename.quote (ofn ^ ".png"))));
- List.iter (fun x,_ -> Sys.remove x) filenames;
- List.iter Sys.remove (List.flatten items);
- w#destroy ();
- *)
- end
+(** @param reuse if set reused last opened cic browser otherwise
+* opens a new one. default is false *)
+let show_entry ?(reuse=false) t =
+ let browser =
+ if reuse then
+ (match !cicBrowsers with
+ [] -> cicBrowser ()
+ | b :: _ -> (b :> MatitaGuiTypes.cicBrowser))
+ else
+ cicBrowser ()
+ in
+ browser#load t
+;;
let refresh_all_browsers () =
List.iter (fun b -> b#refresh ~force:false ()) !cicBrowsers
-let update_font_sizes () =
- List.iter (fun b -> b#updateFontSize) !cicBrowsers;
- (cicMathView_instance ())#update_font_size
-
let get_math_views () =
(cicMathView_instance ()) :: (List.map (fun b -> b#mathView) !cicBrowsers)