diff --git a/Common/Views.cpp b/Common/Views.cpp
index 12cdb4a6f7585a669435b87fd369f4a293bb68bf..0f23ff63231ed334036f4dd725445435cb49f59a 100644
--- a/Common/Views.cpp
+++ b/Common/Views.cpp
@@ -1,4 +1,4 @@
-/* $Id: Views.cpp,v 1.3 2000-11-25 15:26:10 geuzaine Exp $ */
+/* $Id: Views.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "Views.h"
@@ -34,6 +34,8 @@ void BeginView(int allocate){
   ActualView->NbSS = ActualView->NbVS = ActualView->NbTS = 0;
 
   if(allocate){
+    ActualView->Time = List_Create(100,1000,sizeof(double));
+
     ActualView->SP = List_Create(100,1000,sizeof(double));
     ActualView->VP = List_Create(100,1000,sizeof(double));
     ActualView->TP = List_Create(100,1000,sizeof(double));
@@ -62,6 +64,7 @@ void BeginView(int allocate){
   ActualView->IntervalsType = CTX.post.initial_intervals;
   ActualView->Light = 0;
   ActualView->ShowElement = 0;
+  ActualView->ShowTime = 1;
   ActualView->Visible = CTX.post.initial_visibility;
   ActualView->TimeStep = 0;
   ActualView->ArrowScale = 100.; 
@@ -88,6 +91,7 @@ void BeginView(int allocate){
 void EndView(int AddInUI, int Number, char *FileName, char *Name, 
 	     double XOffset, double YOffset, double ZOffset){
   int i, nb;
+  double d;
   extern void AddViewInUI(int , char *, int);
 
   // Points
@@ -174,6 +178,14 @@ void EndView(int AddInUI, int Number, char *FileName, char *Name,
 			    nb-12, (double*)List_Pointer(ActualView->TS,i+12));
   }
 
+  // Dummy time values if using old parsed format...
+  if(!List_Nbr(ActualView->Time)){
+    for(i=0 ; i<ActualView->NbTimeStep ; i++){
+      d = (double)i;
+      List_Add(ActualView->Time, &d);
+    }
+  }
+
   strcpy(ActualView->FileName,FileName);
   strcpy(ActualView->Name,Name);
   strcpy(ActualView->Format, "%.3e");
@@ -234,6 +246,8 @@ void FreeView(Post_View *v){
   if(free && !v->Links){
     Msg(DEBUG, " ->Freeing View");
 
+    List_Delete(v->Time);
+
     List_Delete(v->SP); List_Delete(v->VP); List_Delete(v->TP);
     List_Delete(v->Points);
 
@@ -345,8 +359,128 @@ void AddView_TensorSimplex(int dim, double *coord, int N, double *v){
 /*  R e a d _ V i e w                                                       */
 /* ------------------------------------------------------------------------ */
 
-void Read_View(char *FileName){
+extern int Force_ViewNumber;
 
-  
+void Read_View(FILE *file, char *filename){
+  char   str[NAME_STR_L], name[NAME_STR_L];
+  int    nb, format, nbtimestep;
+  double version;
+
+  while (1) {
+
+    do { 
+      fgets(str, NAME_STR_L, file) ; 
+      if (feof(file))  break ;
+    } while (str[0] != '$') ;  
+
+    if (feof(file))  break ;
+
+    /*  F o r m a t  */
+
+    if (!strncmp(&str[1], "PostFormat", 10)){
+      fscanf(file, "%lf %d\n", &version, &format) ;
+      if(version < 0.995){
+	Msg(ERROR, "The Version of this File is too old (<0.995)");
+	return;
+      }
+      if(format == 0) format = LIST_FORMAT_ASCII ;
+      else if(format == 1) format = LIST_FORMAT_BINARY ;
+      else Msg(FATAL, "Unknown Format for View");
+    }
+
+    /*  V i e w  */
+
+    if (!strncmp(&str[1], "View", 4)) {
+
+      BeginView(0);
+
+      fscanf(file, "%s %d %d %d %d %d %d %d %d %d %d %d %d %d\n", 
+	     name, &nbtimestep,
+	     &ActualView->NbSP, &ActualView->NbVP, &ActualView->NbTP, 
+	     &ActualView->NbSL, &ActualView->NbVL, &ActualView->NbTL, 
+	     &ActualView->NbST, &ActualView->NbVT, &ActualView->NbTT, 
+	     &ActualView->NbSS, &ActualView->NbVS, &ActualView->NbTS);
+
+      Msg(DEBUG, "View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d",
+	  name, nbtimestep,
+	  ActualView->NbSP, ActualView->NbVP, ActualView->NbTP, 
+	  ActualView->NbSL, ActualView->NbVL, ActualView->NbTL, 
+	  ActualView->NbST, ActualView->NbVT, ActualView->NbTT, 
+	  ActualView->NbSS, ActualView->NbVS, ActualView->NbTS);
+
+      ActualView->Time = List_CreateFromFile(nbtimestep, sizeof(double), file, format);
+
+      if((nb = ActualView->NbSP + ActualView->NbVP + ActualView->NbTP))
+	ActualView->Points = List_Create(nb,1,sizeof(Post_Simplex));
+      else
+	ActualView->Points = NULL ;
+      nb = ActualView->NbSP ? 
+	ActualView->NbSP * nbtimestep     + ActualView->NbSP * 3 : 0 ;
+      ActualView->SP = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbVP ?
+	ActualView->NbVP * nbtimestep * 3 + ActualView->NbVP * 3 : 0 ;
+      ActualView->VP = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbTP ? 
+	ActualView->NbTP * nbtimestep * 9 + ActualView->NbTP * 3 : 0 ;
+      ActualView->TP = List_CreateFromFile(nb, sizeof(double), file, format);
+
+      if((nb = ActualView->NbSL + ActualView->NbVL + ActualView->NbTL))
+	ActualView->Lines = List_Create(nb,1,sizeof(Post_Simplex));
+      else
+	ActualView->Lines = NULL ;
+      nb = ActualView->NbSL ? 
+	ActualView->NbSL * nbtimestep * 2     + ActualView->NbSL * 6 : 0 ;
+      ActualView->SL = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbVL ?
+	ActualView->NbVL * nbtimestep * 2 * 3 + ActualView->NbVL * 6 : 0 ;
+      ActualView->VL = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbTL ?
+	ActualView->NbTL * nbtimestep * 2 * 9 + ActualView->NbTL * 6 : 0 ;
+      ActualView->TL = List_CreateFromFile(nb, sizeof(double), file, format);
+
+      if((nb = ActualView->NbST + ActualView->NbVT + ActualView->NbTT))
+	ActualView->Triangles = List_Create(nb,1,sizeof(Post_Simplex));
+      else
+	ActualView->Triangles = NULL ;
+      nb = ActualView->NbST ? 
+	ActualView->NbST * nbtimestep * 3     + ActualView->NbST * 9 : 0 ;
+      ActualView->ST = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbVT ? 
+	ActualView->NbVT * nbtimestep * 3 * 3 + ActualView->NbVT * 9 : 0 ;
+      ActualView->VT = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbTT ? 
+	ActualView->NbTT * nbtimestep * 3 * 9 + ActualView->NbTT * 9 : 0 ;
+      ActualView->TT = List_CreateFromFile(nb, sizeof(double), file, format);
+
+      if((nb = ActualView->NbSS + ActualView->NbVS + ActualView->NbTS))
+	ActualView->Tetrahedra = List_Create(nb,1,sizeof(Post_Simplex));
+      else
+	ActualView->Tetrahedra = NULL ;
+      nb = ActualView->NbSS ?
+	ActualView->NbSS * nbtimestep * 4     + ActualView->NbSS * 12 : 0 ;
+      ActualView->SS = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbVS ? 
+	ActualView->NbVS * nbtimestep * 4 * 3 + ActualView->NbVS * 12 : 0 ;
+      ActualView->VS = List_CreateFromFile(nb, sizeof(double), file, format);
+      nb = ActualView->NbTS ?
+	ActualView->NbTS * nbtimestep * 4 * 9 + ActualView->NbTS * 12 : 0 ;
+      ActualView->TS = List_CreateFromFile(nb, sizeof(double), file, format);
+
+      Msg(DEBUG, "Read View '%s' (%d TimeSteps): %d %d %d %d %d %d %d %d %d %d %d %d",
+	  name, nbtimestep,
+	  List_Nbr(ActualView->SP), List_Nbr(ActualView->VP), List_Nbr(ActualView->TP), 
+	  List_Nbr(ActualView->SL), List_Nbr(ActualView->VL), List_Nbr(ActualView->TL), 
+	  List_Nbr(ActualView->ST), List_Nbr(ActualView->VT), List_Nbr(ActualView->TT), 
+	  List_Nbr(ActualView->SS), List_Nbr(ActualView->VS), List_Nbr(ActualView->TS));
+
+      EndView(1, Force_ViewNumber, filename, name, 0., 0., 0.); 
+    }
+
+    do {
+      fgets(str, NAME_STR_L, file) ;
+      if (feof(file)) Msg(ERROR,"Prematured End of File");
+    } while (str[0] != '$') ;
+
+  }   /* while 1 ... */
 
 }
diff --git a/Common/Views.h b/Common/Views.h
index e99becd37a55ad953ddb9ec1df1f5940e539aafc..aeed59913eae8f2d6fee29cc3aa5dcf031ee58a3 100644
--- a/Common/Views.h
+++ b/Common/Views.h
@@ -1,4 +1,4 @@
-/* $Id: Views.h,v 1.4 2000-11-25 15:26:10 geuzaine Exp $ */
+/* $Id: Views.h,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */
 #ifndef _VIEWS_H_
 #define _VIEWS_H_
 
@@ -17,12 +17,14 @@ typedef struct{
   double Min, Max, CustomMin, CustomMax;
   double Offset[3], Raise[3], ArrowScale;
   int Visible, ScalarOnly;
-  int IntervalsType, NbIso, Light, ShowElement;
+  int IntervalsType, NbIso, Light, ShowElement, ShowTime;
   int ShowScale, TransparentScale, ScaleType, RangeType;
   int ArrowType, ArrowLocation;
   int TimeStep, NbTimeStep;
   ColorTable CT;
 
+  List_T *Time;
+
   int NbSP, NbVP, NbTP;
   List_T *SP, *VP, *TP, *Points; // points
   int NbSL, NbVL, NbTL;
@@ -77,6 +79,8 @@ void EndView (int AddInUI, int Number, char *FileName, char *Name,
 	      double XOffset, double YOffset, double ZOffset);
 void FreeView(Post_View *v);
 
+void Read_View(FILE *file, char *filename);
+
 void AddView_ScalarSimplex(int dim, double *coord, int N, double *v);
 void AddView_VectorSimplex(int dim, double *coord, int N, double *v);
 void AddView_TensorSimplex(int dim, double *coord, int N, double *v);
diff --git a/DataStr/List.cpp b/DataStr/List.cpp
index 3de4d326fd33f1b224d02bf3a1e081949cf57005..0c48b35c076c1a12ce8a5e1ff470955de62ceb39 100644
--- a/DataStr/List.cpp
+++ b/DataStr/List.cpp
@@ -1,5 +1,5 @@
-/* $Id: List.cpp,v 1.3 2000-11-23 23:20:34 geuzaine Exp $ */
-#define RCSID "$Id: List.cpp,v 1.3 2000-11-23 23:20:34 geuzaine Exp $"
+/* $Id: List.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */
+#define RCSID "$Id: List.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $"
 /* Original author: Marc UME */
 
 #include <stdlib.h>
@@ -36,6 +36,7 @@ List_T *List_Create(int n, int incr, int size)
 
 void List_Delete(List_T *liste)
 {
+  if(!liste) return ;
   Free(liste->array);
   Free(liste);
 }
@@ -336,3 +337,43 @@ void List_Copy(List_T *a , List_T *b){
     List_Add(b,List_Pointer(a,i));
   }
 }
+
+List_T *List_CreateFromFile(int n, int size, FILE *file, int format){
+  int i;
+  List_T *liste;
+
+  if(!n) return NULL;
+  
+  liste = List_Create(n, 1, size);
+  liste->n = n;
+  switch(format){
+  case LIST_FORMAT_ASCII :
+    for(i=0;i<n;i++) fscanf(file, "%lf ", (double*)&liste->array[i*size]) ;
+    return liste;
+  case LIST_FORMAT_BINARY :
+    fread(liste->array, size, n, file);
+    return liste;
+  default :
+    Msg(ERROR, "Unknown List Format");
+    return NULL;
+  }
+
+}
+
+void List_WriteToFile(List_T *liste, FILE *file, int format){
+  int i, n;
+
+  if(!(n=List_Nbr(liste))) return ;
+
+  switch(format){
+  case LIST_FORMAT_ASCII :
+    for(i=0;i<n;i++) fprintf(file, "%g ", *((double*)&liste->array[i*liste->size])) ;
+    fprintf(file, "\n");
+    break;
+  case LIST_FORMAT_BINARY :
+    fwrite(liste->array, liste->size, n, file);
+    break;
+  default :
+    Msg(ERROR, "Unknown List Format");
+  }
+}
diff --git a/DataStr/List.h b/DataStr/List.h
index 9a7b2a89ae02e4a87d2ec6ff8c9d6a1ec90b0195..0773ad36faac9988825eac61b4fa88535bfbf9b4 100644
--- a/DataStr/List.h
+++ b/DataStr/List.h
@@ -1,8 +1,12 @@
-/* $Id: List.h,v 1.2 2000-11-23 14:11:29 geuzaine Exp $ */
-/* $Id: List.h,v 1.2 2000-11-23 14:11:29 geuzaine Exp $ */
+/* $Id: List.h,v 1.3 2000-11-25 23:10:37 geuzaine Exp $ */
 #ifndef _LIST_H_
 #define _LIST_H_
 
+#include <stdio.h>
+
+#define LIST_FORMAT_ASCII       0
+#define LIST_FORMAT_BINARY      1
+
 typedef struct {
   int nmax;
   int size;
@@ -41,6 +45,8 @@ void    List_Reset(List_T *liste);
 void    List_Action(List_T *liste, void (*action)(void *data, void *dummy));
 void    List_Action_Inverse(List_T *liste, void (*action)(void *data, void *dummy));
 void    List_Copy(List_T *a , List_T *b);
+List_T *List_CreateFromFile(int n, int size, FILE *file, int format);
+void    List_WriteToFile(List_T *liste, FILE *file, int format);
 
 #endif
 
diff --git a/Graphics/Scale.cpp b/Graphics/Scale.cpp
index 1b1ba227cc6995ad40e583c2bc7aeedbd912f952..692ca5609c552d93b8a56f2024d4efa6e3a6bd9a 100644
--- a/Graphics/Scale.cpp
+++ b/Graphics/Scale.cpp
@@ -1,4 +1,4 @@
-/* $Id: Scale.cpp,v 1.3 2000-11-23 16:51:29 geuzaine Exp $ */
+/* $Id: Scale.cpp,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -209,7 +209,10 @@ void draw_scale(Post_View *v, double xmin, double ymin, double *width, double he
   /* the label */
   
   glRasterPos2d(cv_xmin,ymin);
-  sprintf(label, "%s", v->Name);
+  if(List_Nbr(v->Time)>1 && v->ShowTime)
+    sprintf(label, "%s (%g)", v->Name, *(double*)List_Pointer(v->Time,v->TimeStep));
+  else
+    sprintf(label, "%s", v->Name);
   Draw_String(label); CHECK_W;
 
 
diff --git a/Unix/CbContext.cpp b/Unix/CbContext.cpp
index 851c27c9e793ad5da4c5ed31b9448a10ac88a747..8216a300e771160324be0b9b6c42cd4995be7aef 100644
--- a/Unix/CbContext.cpp
+++ b/Unix/CbContext.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbContext.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: CbContext.cpp,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -604,13 +604,15 @@ int AddViewInUI(int i, char *Name, int Num){
   return 0;
 }
 
+static int All = 0 ;
+
 void RemoveViewCb(Widget w, XtPointer client_data, XtPointer call_data){
   Post_View      *v;
   int            i;
   
   i = (long int)client_data ;
 
-  v = (Post_View*)List_Pointer(Post_ViewList,(long int)client_data-1);
+  v = (Post_View*)List_Pointer(Post_ViewList,(long int)i-1);
 
   while(txt_post[i]){
     strncpy(txt_post[i-1], txt_post[i], NAME_STR_L);
@@ -627,6 +629,19 @@ void RemoveViewCb(Widget w, XtPointer client_data, XtPointer call_data){
   if(actual_global_context == CONTEXT_POST)
     ActualizeContextCb(NULL,(XtPointer)actual_global_context,NULL);  
 
+  if(!All){
+    Init();
+    Draw();
+  }
+}
+
+void RemoveAllViewsCb(Widget w, XtPointer client_data, XtPointer call_data){
+  int i=1;
+  if(!Post_ViewList) return;
+  All = 1;
+  while(List_Nbr(Post_ViewList))
+    RemoveViewCb(NULL, (XtPointer)i, NULL);
+  All = 0;
   Init();
   Draw();
 }
diff --git a/Unix/CbInput.cpp b/Unix/CbInput.cpp
index 1282c5b20bf2f89d1c9d1809cf358227f51abb7a..7116d97219a55a5f2f1b21ba009b8a939254b04e 100644
--- a/Unix/CbInput.cpp
+++ b/Unix/CbInput.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbInput.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: CbInput.cpp,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -173,6 +173,14 @@ void KeyboardAccel(XEvent *event){
       Modifier = 0 ;
       ManageCb(NULL,(XtPointer)WID.FD.printDialog,NULL); 
       break;
+    case XK_l : case XK_L : 
+      Modifier = 0 ;
+      ReloadAllViewsCb(NULL,NULL,NULL); 
+      break;
+    case XK_r : case XK_R : 
+      Modifier = 0 ;
+      RemoveAllViewsCb(NULL,NULL,NULL); 
+      break;
     }
     break ;
     
diff --git a/Unix/CbPost.cpp b/Unix/CbPost.cpp
index be96fe558d3c8841bd8d59eb52f2dcda05428fa9..24eb84ef394fc8cd360122ea5d233fafad0d51f5 100644
--- a/Unix/CbPost.cpp
+++ b/Unix/CbPost.cpp
@@ -1,4 +1,4 @@
-/* $Id: CbPost.cpp,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: CbPost.cpp,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -130,6 +130,7 @@ void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){
     }
   }
 
+  v2->Time        = v1->Time;
   v2->Points      = v1->Points;
   v2->Lines       = v1->Lines;
   v2->Triangles   = v1->Triangles;
@@ -144,6 +145,8 @@ void DuplicateViewCb (Widget w, XtPointer client_data, XtPointer call_data){
   Draw();
 }
 
+static int All = 0;
+
 void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){
   Post_View  *v ;
   char filename[NAME_STR_L];
@@ -156,7 +159,19 @@ void ReloadViewCb (Widget w, XtPointer client_data, XtPointer call_data){
   FreeView(v);
   MergeProblem(filename);
   Force_ViewNumber = 0 ;
-  
+  if(!All){
+    Init();
+    Draw();
+  }
+}
+
+void ReloadAllViewsCb(Widget w, XtPointer client_data, XtPointer call_data){
+  int i;
+  if(!Post_ViewList) return;
+  All = 1;
+  for(i = 1 ; i<=List_Nbr(Post_ViewList) ; i++)
+    ReloadViewCb(NULL, (XtPointer)i, NULL);
+  All = 0;
   Init();
   Draw();
 }
@@ -243,6 +258,7 @@ void PostDialogCb (Widget w, XtPointer client_data, XtPointer call_data){
 
     XtVaSetValues(WID.PD.scaleShowButt, XmNset, v->ShowScale?True:False, NULL);
     XtVaSetValues(WID.PD.scaleTransButt, XmNset, v->TransparentScale?True:False, NULL);
+    XtVaSetValues(WID.PD.scaleTimeButt, XmNset, v->ShowTime?True:False, NULL);
 
     XtVaSetValues(WID.PD.scaleText[0], XmNvalue, v->Format, NULL);
     XtSetSensitive(WID.PD.scaleText[0], v->ShowScale?1:0);
@@ -423,6 +439,7 @@ void PostCb (Widget w, XtPointer client_data, XtPointer call_data){
       break;
     case POST_SCALE_SHOW: 
     case POST_SCALE_TRANSPARENCY: 
+    case POST_SCALE_TIME: 
     case POST_SCALE_FORMAT: 
     case POST_SCALE_LABEL:
     case POST_SCALE_MIN:
@@ -586,6 +603,9 @@ void ChangeViewParam (Post_View *v, XtPointer client_data, XtPointer call_data){
   case POST_SCALE_TRANSPARENCY: 
     v->TransparentScale = !v->TransparentScale; 
     break;
+  case POST_SCALE_TIME: 
+    v->ShowTime = !v->ShowTime; 
+    break;
   case POST_SCALE_FORMAT: 
     c = XmTextGetString(WID.PD.scaleText[0]); strcpy(v->Format,c); 
     break;
diff --git a/Unix/CbPost.h b/Unix/CbPost.h
index c5f4b2469fb33eca0c9cc0f10ab6595725cdeb26..0c50f59f7c990b4d2fcf0cee3b0ca11c267d53b1 100644
--- a/Unix/CbPost.h
+++ b/Unix/CbPost.h
@@ -1,4 +1,4 @@
-/* $Id: CbPost.h,v 1.2 2000-11-23 14:11:41 geuzaine Exp $ */
+/* $Id: CbPost.h,v 1.3 2000-11-25 23:10:37 geuzaine Exp $ */
 #ifndef _CB_POST_H_
 #define _CB_POST_H_
 
@@ -40,6 +40,7 @@
 #define  POST_SCALE_INTERVALS_TYPE_NUMERIC         433
 #define  POST_SCALE_INTERVALS_SCALE                434
 #define  POST_SCALE_INTERVALS_TEXT                 435
+#define  POST_SCALE_TIME                           436
 
 #define  POST_COLOR_REPLOT                         440
 
diff --git a/Unix/Main.cpp b/Unix/Main.cpp
index c0483a0f0f155a3a73a5ecd20d40a8391312ac44..45438d7077302daa627643c410a8235982940bcd 100644
--- a/Unix/Main.cpp
+++ b/Unix/Main.cpp
@@ -1,4 +1,4 @@
-/* $Id: Main.cpp,v 1.12 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: Main.cpp,v 1.13 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include <signal.h>
 
@@ -116,6 +116,10 @@ void ParseFile(char *f){
       Msg(WARNING, "No Post-Processing View Available to set Colors From");
     }
   }
+  else if(!strncmp(String, "$PostFormat", 11) ||
+	  !strncmp(String, "$View", 5)){
+    Read_View(yyin, yyname);
+  }
   else{
     while(!feof(yyin)) yyparse();
   }
diff --git a/Unix/Register.cpp b/Unix/Register.cpp
index d11281efc00d4c9aa2f4219365f80116ca26238d..9ebf11a0587c0e03fed16b16ea9ca942b433b4d4 100644
--- a/Unix/Register.cpp
+++ b/Unix/Register.cpp
@@ -1,4 +1,4 @@
-/* $Id: Register.cpp,v 1.7 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: Register.cpp,v 1.8 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -25,7 +25,9 @@ void RegisterCallbacks_M(Widgets_T *w){
   register_activate_cb (w->M.fileButt[2],   FileCb,             FILE_SAVE_MESH);
   register_activate_cb (w->M.fileButt[3],   ManageCb,           w->FD.saveAsDialog);
   register_activate_cb (w->M.fileButt[4],   ManageCb,           w->FD.printDialog);
-  register_activate_cb (w->M.fileButt[5],   ExitCb,             NULL);
+  register_activate_cb (w->M.fileButt[5],   ReloadAllViewsCb,   NULL);
+  register_activate_cb (w->M.fileButt[6],   RemoveAllViewsCb,   NULL);
+  register_activate_cb (w->M.fileButt[7],   ExitCb,             NULL);
 
   register_activate_cb (w->M.moduleButt[0], ActualizeContextCb, CONTEXT_GEOM);
   register_activate_cb (w->M.moduleButt[1], ActualizeContextCb, CONTEXT_MESH);
@@ -333,6 +335,7 @@ void RegisterCallbacks_PD(Widgets_T *w){
   register_cancel_cb   (w->PD.scaleDialog,       ManageCb,  w->PD.scaleDialog); 
   register_valchg_cb   (w->PD.scaleShowButt,     PostCb,    POST_SCALE_SHOW);
   register_valchg_cb   (w->PD.scaleTransButt,    PostCb,    POST_SCALE_TRANSPARENCY);
+  register_valchg_cb   (w->PD.scaleTimeButt,     PostCb,    POST_SCALE_TIME);
   register_valchg_cb   (w->PD.scaleText[0],      PostCb,    POST_SCALE_FORMAT);
   register_valchg_cb   (w->PD.scaleText[1],      PostCb,    POST_SCALE_LABEL);
   register_valchg_cb   (w->PD.scaleRangeButt,    PostCb,    POST_SCALE_FORCE_RANGE);
diff --git a/Unix/Register.h b/Unix/Register.h
index 7e81704c4c2d5a78f868e6bf1f0d5e1ec8d64b41..f49cc979721d6059315a0340b1eacebda29d48b2 100644
--- a/Unix/Register.h
+++ b/Unix/Register.h
@@ -1,4 +1,4 @@
-/* $Id: Register.h,v 1.3 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: Register.h,v 1.4 2000-11-25 23:10:37 geuzaine Exp $ */
 #ifndef _REGISTER_H_
 #define _REGISTER_H_
 
@@ -29,9 +29,11 @@ void CurrentInfoCb      (Widget w, XtPointer client_data, XtPointer call_data);
 void CurrentViewportCb  (Widget w, XtPointer client_data, XtPointer call_data);
 void CurrentViewCb      (Widget w, XtPointer client_data, XtPointer call_data);
 void SwapViewCb         (Widget w, XtPointer client_data, XtPointer call_data);
-void RemoveViewCb       (Widget w, XtPointer client_data, XtPointer call_data);
 void DuplicateViewCb    (Widget w, XtPointer client_data, XtPointer call_data);
 void ReloadViewCb       (Widget w, XtPointer client_data, XtPointer call_data);
+void ReloadAllViewsCb   (Widget w, XtPointer client_data, XtPointer call_data);
+void RemoveViewCb       (Widget w, XtPointer client_data, XtPointer call_data);
+void RemoveAllViewsCb   (Widget w, XtPointer client_data, XtPointer call_data);
 
 void OptionsCb          (Widget w, XtPointer client_data, XtPointer call_data);
 void FileCb             (Widget w, XtPointer client_data, XtPointer call_data);
diff --git a/Unix/Widgets.cpp b/Unix/Widgets.cpp
index 656a96eaed855b804b8f9ca3388e21a98692b437..b769daf436cd17ce445235b19198a06256f6112c 100644
--- a/Unix/Widgets.cpp
+++ b/Unix/Widgets.cpp
@@ -1,4 +1,4 @@
-/* $Id: Widgets.cpp,v 1.9 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: Widgets.cpp,v 1.10 2000-11-25 23:10:37 geuzaine Exp $ */
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -103,12 +103,30 @@ void CreateWidgets_M(Widgets_T *w){
   w->M.fileSep[1] = XmCreateSeparator(w->M.filePane, "MfileSep1", arg, i);
   XtManageChild(w->M.fileSep[1]);
 
+  i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Reload All Views")); i++;
+  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-l)")); i++;
+  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>l:"); i++;
+  w->M.fileButt[5] = XmCreatePushButton(w->M.filePane, "MfileButt5", arg, i);
+  XtManageChild(w->M.fileButt[5]);
+
+  i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Remove All Views")); i++;
+  XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-r)")); i++;
+  XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>r:"); i++;
+  w->M.fileButt[6] = XmCreatePushButton(w->M.filePane, "MfileButt6", arg, i);
+  XtManageChild(w->M.fileButt[6]);
+
+  i=0;
+  w->M.fileSep[2] = XmCreateSeparator(w->M.filePane, "MfileSep2", arg, i);
+  XtManageChild(w->M.fileSep[2]);
+
   i=0;
   XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Quit")); i++;
   XtSetArg(arg[i], XmNacceleratorText, XmStringCreateSimple("(C-q)")); i++;
   XtSetArg(arg[i], XmNaccelerator, "Ctrl<Key>q:"); i++;
-  w->M.fileButt[5] = XmCreatePushButton(w->M.filePane, "MfileButt5", arg, i);
-  XtManageChild(w->M.fileButt[5]);
+  w->M.fileButt[7] = XmCreatePushButton(w->M.filePane, "MfileButt7", arg, i);
+  XtManageChild(w->M.fileButt[7]);
 
   i=0;
   XtSetArg(arg[i], XmNsubMenuId, w->M.filePane); i++;
@@ -2378,15 +2396,25 @@ void CreateWidgets_PD(Widgets_T *w){
   XtManageChild(w->PD.scaleFrameRowCol[0]);
 
   i=0;
-  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Visibility")); i++;
-  w->PD.scaleShowButt = XmCreateToggleButton(w->PD.scaleFrameRowCol[0], "PDscaleShowButt", arg, i);
+  XtSetArg(arg[i], XmNnumColumns, 2); i++;
+  w->PD.scaleCheck = XmCreateSimpleCheckBox(w->PD.scaleFrameRowCol[0], "PDscaleCheck", arg, i);
+  XtManageChild(w->PD.scaleCheck);
+
+  i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Show")); i++;
+  w->PD.scaleShowButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleShowButt", arg, i);
   XtManageChild(w->PD.scaleShowButt);
 
   i=0;
   XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Transparency")); i++;
-  w->PD.scaleTransButt = XmCreateToggleButton(w->PD.scaleFrameRowCol[0], "PDscaleTransButt", arg, i);
+  w->PD.scaleTransButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleTransButt", arg, i);
   XtManageChild(w->PD.scaleTransButt);
 
+  i=0;
+  XtSetArg(arg[i], XmNlabelString, XmStringCreateSimple("Time Display")); i++;
+  w->PD.scaleTimeButt = XmCreateToggleButton(w->PD.scaleCheck, "PDscaleTimeButt", arg, i);
+  XtManageChild(w->PD.scaleTimeButt);
+
   for(n=0 ; n<2 ; n++){
     i=0;
     XtSetArg(arg[i], XmNvalue, "0.00000000000000000001e-1"); i++; /* lesstif bug */
@@ -2422,6 +2450,7 @@ void CreateWidgets_PD(Widgets_T *w){
   }
 
   i=0;
+  XtSetArg(arg[i], XmNnumColumns, 2); i++;
   w->PD.scaleTypeCheck = XmCreateRadioBox(w->PD.scaleFrameRowCol[1], "PDscaleTypeCheck", arg, i);
   XtManageChild(w->PD.scaleTypeCheck);
 
diff --git a/Unix/Widgets.h b/Unix/Widgets.h
index cfc2bdf882ed26383248fd6600ff05b2d14a005f..27aa99635ca18044f288a1e9d650bdb6c43d634f 100644
--- a/Unix/Widgets.h
+++ b/Unix/Widgets.h
@@ -1,4 +1,4 @@
-/* $Id: Widgets.h,v 1.4 2000-11-25 15:26:12 geuzaine Exp $ */
+/* $Id: Widgets.h,v 1.5 2000-11-25 23:10:37 geuzaine Exp $ */
 #ifndef _WIDGETS_H_
 #define _WIDGETS_H_
 
@@ -19,7 +19,7 @@ typedef struct {
   struct {
     Widget   shell, containerWin ; 
     Widget   menuBar ;
-    Widget     fileCascade, filePane, fileButt[6], fileSep[2] ;
+    Widget     fileCascade, filePane, fileButt[8], fileSep[3] ;
     Widget     moduleCascade, modulePane, moduleButt[3] ;
     Widget     optionCascade, optionPane, optionButt[6], optionSep[2] ;
     Widget     helpCascade, helpPane, helpButt[2], helpSep[1] ;
@@ -198,7 +198,7 @@ typedef struct {
     
     Widget   scaleDialog, scaleRowCol ;
     Widget   scaleFrame[2][4], scaleFrameRowCol[4] ;
-    Widget   /* 1 */ scaleShowButt, scaleTransButt, scaleText[2] ;
+    Widget   /* 1 */ scaleCheck, scaleShowButt, scaleTransButt, scaleTimeButt, scaleText[2] ;
     Widget   /* 2 */ scaleRangeButt, scaleRangeText[2], scaleTypeCheck, 
                      scaleTypeButt[2] ;
     Widget   /* 3 */ scaleIntervalsCheck, scaleIntervalsButt[4], 
diff --git a/bin/gdb_gmsh b/bin/gdb_gmsh
index bd665ca2273b089aad6c9977e62fd24cd09e8b35..bc2d1bd56ad51b0a1b765df719f0131f32d327c4 100644
--- a/bin/gdb_gmsh
+++ b/bin/gdb_gmsh
@@ -1,4 +1,4 @@
-gdb /usr/users53/geuzaine/SOURCES/gmsh-nl/bin/gmsh \
+gdb  /usr/users53/geuzaine/SOURCES/gmsh-nl/bin/gmsh \
   -d /usr/users53/geuzaine/SOURCES/gmsh-nl/GmshUnix \
   -d /usr/users53/geuzaine/SOURCES/gmsh-nl/GmshMesh \
   -d /usr/users53/geuzaine/SOURCES/gmsh-nl/GmshGeo \