]> matita.cs.unibo.it Git - helm.git/commitdiff
bugfixes:
authorEnrico Tassi <enrico.tassi@inria.fr>
Wed, 14 Sep 2005 13:52:37 +0000 (13:52 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Wed, 14 Sep 2005 13:52:37 +0000 (13:52 +0000)
1) ask for saving/mooing only when the user has choosen a file to load
2) opening a file doesn't call goto_top (removing all xml, even if the moo has
   been generated). This fix should enforce the invariant that a moo exists only
   if the corrsponding xml objects do.
3) the switch_page callback is inhibited before removing pages in
   sequentViewers#reset

helm/matita/matita.ml
helm/matita/matitaGui.ml
helm/matita/matitaMathView.ml
helm/matita/matitaScript.ml

index 6e5af0645c7dc7a37cef6d7df9cfc3b9899267ec..2a87554d8f76bb2bf405e3b46e6ec8a539cd6263 100644 (file)
@@ -91,12 +91,9 @@ let _ =
     | Incomplete_proof ((proof, goal) as status) ->
         sequents_viewer#load_sequents status;
         sequents_viewer#goto_sequent goal
-    | Proof proof -> 
-        sequents_viewer#load_logo_with_qed
-    | No_proof -> 
-        sequents_viewer#load_logo
-    | Intermediate _ -> 
-        assert false (* only the engine may be in this state *)
+    | Proof proof -> sequents_viewer#load_logo_with_qed
+    | No_proof -> sequents_viewer#load_logo
+    | Intermediate _ -> assert false (* only the engine may be in this state *)
   in
   script#addObserver sequents_observer;
   script#addObserver browser_observer
index 153d474abe09b6a5e22baff307ebcaac3cc0283a..1b46c03a4e2ea4b678564b503ad21fa35b889cf0 100644 (file)
@@ -606,19 +606,19 @@ class gui () =
         let script = s () in 
         let status = script#status in
         try 
-          if source_view#buffer#modified then
-            begin
-              match ask_unsaved main#toplevel with
-              | `YES -> saveScript ()
-              | `NO -> ()
-              | `CANCEL -> raise MatitaTypes.Cancel
-            end;
-          (match script_fname with
-          | None -> ()
-          | Some fname -> 
-              ask_and_save_moo_if_needed main#toplevel fname status);
           match self#chooseFile () with
           | Some f -> 
+                if source_view#buffer#modified then
+                  begin
+                    match ask_unsaved main#toplevel with
+                    | `YES -> saveScript ()
+                    | `NO -> ()
+                    | `CANCEL -> raise MatitaTypes.Cancel
+                  end;
+                (match script_fname with
+                | None -> ()
+                | Some fname -> 
+                    ask_and_save_moo_if_needed main#toplevel fname status);
                 script#reset (); 
                 script#assignFileName f;
                 source_view#source_buffer#begin_not_undoable_action ();
index 47f8c5a5c13d33320deb010b7a81df0187d6d285..532c3dd975a3a2fe4d1364dca912273a51562fd0 100644 (file)
@@ -430,19 +430,19 @@ class sequentsViewer ~(notebook:GPack.notebook) ~(cicMathView:cicMathView) () =
           w#remove cicMathView#coerce;
           scrolledWin <- None
       | None -> ());
-      for i = 0 to pages do notebook#remove_page 0 done;
+      (match switch_page_callback with
+      | Some id ->
+          GtkSignal.disconnect notebook#as_widget id;
+          switch_page_callback <- None
+      | None -> ());
+      for i = 0 to pages do notebook#remove_page 0 done; 
       notebook#set_show_tabs true;
       pages <- 0;
       page2goal <- [];
       goal2page <- [];
       goal2win <- [];
-      _metasenv <- [];
+      _metasenv <- []; 
       self#script#setGoal ~-1;
-      (match switch_page_callback with
-      | Some id ->
-          GtkSignal.disconnect notebook#as_widget id;
-          switch_page_callback <- None
-      | None -> ())
 
     method load_sequents (status: ProofEngineTypes.status) =
       let ((_, metasenv, _, _), goal) = status in
index f181b53d291c0d9a64e8755e867b47d70cdc255d..8bd0d60d1f2df270cdfcb582778fcd2b564aef40 100644 (file)
@@ -586,7 +586,7 @@ object (self)
 
   method loadFromFile f =
     buffer#set_text (MatitaMisc.input_file f);
-    self#goto_top;
+    self#reset_buffer;
     buffer#set_modified false
     
   method assignFileName file =
@@ -613,21 +613,23 @@ object (self)
       end
   
   method private goto_top =
-    MatitaSync.time_travel ~present:self#status ~past:init;
+    MatitaSync.time_travel ~present:self#status ~past:init
+
+  method private reset_buffer = 
     statements <- [];
     history <- [ init ];
     userGoal <- ~-1;
+    self#notify;
     buffer#remove_tag locked_tag ~start:buffer#start_iter ~stop:buffer#end_iter;
     buffer#move_mark (`MARK locked_mark) ~where:buffer#start_iter
 
   method reset () =
-    self#goto_top;
+    self#reset_buffer;
     source_buffer#begin_not_undoable_action ();
     buffer#delete ~start:buffer#start_iter ~stop:buffer#end_iter;
     source_buffer#end_not_undoable_action ();
-    self#notify;
     buffer#set_modified false
-
+  
   method template () =
     let template = MatitaMisc.input_file BuildTimeConf.script_template in 
     buffer#insert ~iter:(buffer#get_iter `START) template;
@@ -645,7 +647,11 @@ object (self)
     let getoldpos _ = buffer#get_iter_at_mark old_locked_mark in 
     let dispose_old_locked_mark () = buffer#delete_mark old_locked_mark in
     match pos with
-    | `Top -> dispose_old_locked_mark (); self#goto_top; self#notify
+    | `Top -> 
+        dispose_old_locked_mark (); 
+        self#goto_top; 
+        self#reset_buffer;
+        self#notify
     | `Bottom ->
         (try 
           let rec dowhile () =