diff --git a/Common/Options.cpp b/Common/Options.cpp
index fc9c2d9ce74092a2f9caf190331b606d69d3c871..8ba5862b1e2a23d9c6cdd34719f3c09876bd0e10 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.50 2001-10-29 08:52:19 geuzaine Exp $
+// $Id: Options.cpp,v 1.51 2001-10-29 16:06:55 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -1621,7 +1621,7 @@ double opt_view_nb_timestep(OPT_ARGS_NUM){
     v->NbTimeStep = (int)val;
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[9]->maximum(v->NbTimeStep-1);
+    WID->view_value[50]->maximum(v->NbTimeStep-1);
   if(WID && (action & GMSH_GUI) && v->NbTimeStep > 1)
     WID->g_status_butt[5]->activate();
 #endif
@@ -1637,7 +1637,7 @@ double opt_view_timestep(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[9]->value(v->TimeStep);
+    WID->view_value[50]->value(v->TimeStep);
 #endif
   return v->TimeStep;
 }
@@ -1665,7 +1665,7 @@ double opt_view_custom_min(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_value[0]->value(v->CustomMin);
+    WID->view_value[31]->value(v->CustomMin);
   }
 #endif
   return v->CustomMin;
@@ -1678,7 +1678,7 @@ double opt_view_custom_max(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[1]->value(v->CustomMax);
+    WID->view_value[32]->value(v->CustomMax);
 #endif
   return v->CustomMax;
 }
@@ -1690,7 +1690,7 @@ double opt_view_offset0(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[3]->value(v->Offset[0]);
+    WID->view_value[40]->value(v->Offset[0]);
 #endif
   return v->Offset[0];
 }
@@ -1702,7 +1702,7 @@ double opt_view_offset1(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[4]->value(v->Offset[1]);
+    WID->view_value[41]->value(v->Offset[1]);
 #endif
   return v->Offset[1];
 }
@@ -1714,7 +1714,7 @@ double opt_view_offset2(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[5]->value(v->Offset[2]);
+    WID->view_value[42]->value(v->Offset[2]);
 #endif
   return v->Offset[2];
 }
@@ -1726,7 +1726,7 @@ double opt_view_raise0(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[6]->value(v->Raise[0]);
+    WID->view_value[43]->value(v->Raise[0]);
 #endif
   return v->Raise[0];
 }
@@ -1738,7 +1738,7 @@ double opt_view_raise1(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[7]->value(v->Raise[1]);
+    WID->view_value[44]->value(v->Raise[1]);
 #endif
   return v->Raise[1];
 }
@@ -1750,7 +1750,7 @@ double opt_view_raise2(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[8]->value(v->Raise[2]);
+    WID->view_value[45]->value(v->Raise[2]);
 #endif
   return v->Raise[2];
 }
@@ -1774,7 +1774,7 @@ double opt_view_explode(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[12]->value(v->Explode);
+    WID->view_value[60]->value(v->Explode);
 #endif
   return v->Explode;
 }
@@ -1802,10 +1802,10 @@ double opt_view_intervals_type(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[3]->value(v->IntervalsType==DRAW_POST_ISO);
-    WID->view_butt[4]->value(v->IntervalsType==DRAW_POST_DISCRETE);
-    WID->view_butt[5]->value(v->IntervalsType==DRAW_POST_CONTINUOUS);
-    WID->view_butt[6]->value(v->IntervalsType==DRAW_POST_NUMERIC);
+    WID->view_butt[30]->value(v->IntervalsType==DRAW_POST_ISO);
+    WID->view_butt[31]->value(v->IntervalsType==DRAW_POST_DISCRETE);
+    WID->view_butt[32]->value(v->IntervalsType==DRAW_POST_CONTINUOUS);
+    WID->view_butt[33]->value(v->IntervalsType==DRAW_POST_NUMERIC);
   }
 #endif
   return v->IntervalsType;
@@ -1819,7 +1819,7 @@ double opt_view_saturate_values(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[25]->value(v->SaturateValues);
+    WID->view_butt[38]->value(v->SaturateValues);
   }
 #endif
   return v->SaturateValues;
@@ -1831,6 +1831,13 @@ double opt_view_graph_type(OPT_ARGS_NUM){
     v->GraphType = (int)val;
     v->Changed = 1;
   }
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
+    WID->view_butt[1]->value(v->GraphType==DRAW_POST_3D);
+    WID->view_butt[2]->value(v->GraphType==DRAW_POST_2D_SPACE);
+    WID->view_butt[3]->value(v->GraphType==DRAW_POST_2D_TIME);
+  }
+#endif
   return v->GraphType;
 }
 
@@ -1840,6 +1847,10 @@ double opt_view_graph_position0(OPT_ARGS_NUM){
     v->GraphPosition[0] = (int)val;
     v->Changed = 1;
   }
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
+    WID->view_value[20]->value(v->GraphPosition[0]);
+#endif
   return v->GraphPosition[0];
 }
 
@@ -1849,6 +1860,10 @@ double opt_view_graph_position1(OPT_ARGS_NUM){
     v->GraphPosition[1] = (int)val;
     v->Changed = 1;
   }
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
+    WID->view_value[21]->value(v->GraphPosition[1]);
+#endif
   return v->GraphPosition[1];
 }
 
@@ -1858,6 +1873,10 @@ double opt_view_graph_size0(OPT_ARGS_NUM){
     v->GraphSize[0] = (int)val;
     v->Changed = 1;
   }
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
+    WID->view_value[22]->value(v->GraphSize[0]);
+#endif
   return v->GraphSize[0];
 }
 
@@ -1867,6 +1886,10 @@ double opt_view_graph_size1(OPT_ARGS_NUM){
     v->GraphSize[1] = (int)val;
     v->Changed = 1;
   }
+#ifdef _FLTK
+  if(WID && (action & GMSH_GUI) && (num == WID->view_number))
+    WID->view_value[23]->value(v->GraphSize[1]);
+#endif
   return v->GraphSize[1];
 }
 
@@ -1878,7 +1901,7 @@ double opt_view_nb_iso(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[2]->value(v->NbIso);
+    WID->view_value[30]->value(v->NbIso);
 #endif
   return v->NbIso;
 }
@@ -1903,7 +1926,7 @@ double opt_view_light(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[17]->value(v->Light);
+    WID->view_butt[11]->value(v->Light);
 #endif
   return v->Light;
 }
@@ -1915,7 +1938,7 @@ double opt_view_smooth_normals(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[27]->value(v->SmoothNormals);
+    WID->view_butt[12]->value(v->SmoothNormals);
 #endif
   return v->SmoothNormals;
 }
@@ -1928,7 +1951,7 @@ double opt_view_angle_smooth_normals(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_value[13]->value(v->AngleSmoothNormals);
+    WID->view_value[10]->value(v->AngleSmoothNormals);
 #endif
   return v->AngleSmoothNormals;
 }
@@ -1940,7 +1963,7 @@ double opt_view_show_element(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[13]->value(v->ShowElement);
+    WID->view_butt[10]->value(v->ShowElement);
 #endif
   return v->ShowElement;
 }
@@ -1951,7 +1974,7 @@ double opt_view_show_time(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[15]->value(v->ShowTime);
+    WID->view_butt[50]->value(v->ShowTime);
 #endif
   return v->ShowTime;
 }
@@ -1962,7 +1985,7 @@ double opt_view_show_scale(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[14]->value(v->ShowScale);
+    WID->view_butt[4]->value(v->ShowScale);
 #endif
   return v->ShowScale;
 }
@@ -1974,7 +1997,7 @@ double opt_view_draw_points(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[18]->value(v->DrawPoints);
+    WID->view_butt[13]->value(v->DrawPoints);
 #endif
   return v->DrawPoints;
 }
@@ -1986,7 +2009,7 @@ double opt_view_draw_lines(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[19]->value(v->DrawLines);
+    WID->view_butt[14]->value(v->DrawLines);
 #endif
   return v->DrawLines;
 }
@@ -1998,7 +2021,7 @@ double opt_view_draw_triangles(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[20]->value(v->DrawTriangles);
+    WID->view_butt[15]->value(v->DrawTriangles);
 #endif
   return v->DrawTriangles;
 }
@@ -2010,7 +2033,7 @@ double opt_view_draw_tetrahedra(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[21]->value(v->DrawTetrahedra);
+    WID->view_butt[16]->value(v->DrawTetrahedra);
 #endif
   return v->DrawTetrahedra;
 }
@@ -2022,7 +2045,7 @@ double opt_view_draw_scalars(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[22]->value(v->DrawScalars);
+    WID->view_butt[17]->value(v->DrawScalars);
 #endif
   return v->DrawScalars;
 }
@@ -2034,7 +2057,7 @@ double opt_view_draw_vectors(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[23]->value(v->DrawVectors);
+    WID->view_butt[18]->value(v->DrawVectors);
 #endif
   return v->DrawVectors;
 }
@@ -2046,7 +2069,7 @@ double opt_view_draw_tensors(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[24]->value(v->DrawTensors);
+    WID->view_butt[19]->value(v->DrawTensors);
 #endif
   return v->DrawTensors;
 }
@@ -2057,7 +2080,7 @@ double opt_view_transparent_scale(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[16]->value(v->TransparentScale);
+    WID->view_butt[5]->value(v->TransparentScale);
 #endif
   return v->TransparentScale;
 }
@@ -2069,9 +2092,9 @@ double opt_view_scale_type(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[1]->value(v->ScaleType==DRAW_POST_LINEAR);
-    WID->view_butt[2]->value(v->ScaleType==DRAW_POST_LOGARITHMIC);
-    WID->view_butt[26]->value(v->ScaleType==DRAW_POST_DOUBLELOGARITHMIC);
+    WID->view_butt[35]->value(v->ScaleType==DRAW_POST_LINEAR);
+    WID->view_butt[36]->value(v->ScaleType==DRAW_POST_LOGARITHMIC);
+    WID->view_butt[37]->value(v->ScaleType==DRAW_POST_DOUBLELOGARITHMIC);
   }
 #endif
   return v->ScaleType;
@@ -2084,7 +2107,7 @@ double opt_view_range_type(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number))
-    WID->view_butt[0]->value(v->RangeType==DRAW_POST_CUSTOM);
+    WID->view_butt[34]->value(v->RangeType==DRAW_POST_CUSTOM);
 #endif
   return v->RangeType;
 }
@@ -2096,10 +2119,10 @@ double opt_view_arrow_type(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[7]->value(v->ArrowType==DRAW_POST_SEGMENT);
-    WID->view_butt[8]->value(v->ArrowType==DRAW_POST_ARROW);
-    WID->view_butt[9]->value(v->ArrowType==DRAW_POST_CONE);
-    WID->view_butt[10]->value(v->ArrowType==DRAW_POST_DISPLACEMENT);
+    WID->view_butt[60]->value(v->ArrowType==DRAW_POST_SEGMENT);
+    WID->view_butt[61]->value(v->ArrowType==DRAW_POST_ARROW);
+    WID->view_butt[62]->value(v->ArrowType==DRAW_POST_CONE);
+    WID->view_butt[63]->value(v->ArrowType==DRAW_POST_DISPLACEMENT);
   }
 #endif
   return v->ArrowType;
@@ -2112,8 +2135,8 @@ double opt_view_arrow_location(OPT_ARGS_NUM){
   }
 #ifdef _FLTK
   if(WID && (action & GMSH_GUI) && (num == WID->view_number)){
-    WID->view_butt[11]->value(v->ArrowLocation==DRAW_POST_LOCATE_COG);
-    WID->view_butt[12]->value(v->ArrowLocation==DRAW_POST_LOCATE_VERTEX);
+    WID->view_butt[64]->value(v->ArrowLocation==DRAW_POST_LOCATE_COG);
+    WID->view_butt[65]->value(v->ArrowLocation==DRAW_POST_LOCATE_VERTEX);
   }
 #endif
   return v->ArrowLocation;
diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index cbf5e2955c62548dcce14b4304f6dd8b7b69e8da..5571da9eba2f5ea1345824c0932310142058057a 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.86 2001-10-29 08:52:19 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.87 2001-10-29 16:06:55 geuzaine Exp $
 
 #include <sys/types.h>
 #include <signal.h>
@@ -1737,13 +1737,13 @@ void view_options_plugin_cb(CALLBACK_ARGS){
 }
 
 void view_options_custom_cb(CALLBACK_ARGS){
-  if(WID->view_butt[0]->value()){
-    WID->view_value[0]->activate();
-    WID->view_value[1]->activate();
+  if(WID->view_butt[34]->value()){
+    WID->view_value[31]->activate();
+    WID->view_value[32]->activate();
   }
   else{
-    WID->view_value[0]->deactivate();
-    WID->view_value[1]->deactivate();
+    WID->view_value[31]->deactivate();
+    WID->view_value[32]->deactivate();
   }
 }
 
@@ -1773,122 +1773,130 @@ void view_options_ok_cb(CALLBACK_ARGS){
 
       // view_butts
 
-      //not this one. if(WID->view_butt[0]->changed())
+      //not this one. if(WID->view_butt[34]->changed())
       opt_view_range_type(i, GMSH_SET, 
-			  WID->view_butt[0]->value()?DRAW_POST_CUSTOM:
+			  WID->view_butt[34]->value()?DRAW_POST_CUSTOM:
 			  DRAW_POST_DEFAULT);
 
       if(force || WID->view_butt[1]->changed() ||
 	 WID->view_butt[2]->changed() ||
 	 WID->view_butt[3]->changed())
+	opt_view_graph_type(i, GMSH_SET, 
+			    WID->view_butt[1]->value()?DRAW_POST_3D:
+			    WID->view_butt[2]->value()?DRAW_POST_2D_SPACE:
+			    DRAW_POST_2D_TIME);
+
+      if(force || WID->view_butt[35]->changed() ||
+	 WID->view_butt[36]->changed() ||
+	 WID->view_butt[37]->changed())
 	opt_view_scale_type(i, GMSH_SET, 
-			    WID->view_butt[1]->value()?DRAW_POST_LINEAR:
-			    WID->view_butt[2]->value()?DRAW_POST_LOGARITHMIC:
+			    WID->view_butt[35]->value()?DRAW_POST_LINEAR:
+			    WID->view_butt[36]->value()?DRAW_POST_LOGARITHMIC:
 			    DRAW_POST_DOUBLELOGARITHMIC);
 
-      if(force || WID->view_butt[25]->changed())
+      if(force || WID->view_butt[38]->changed())
 	opt_view_saturate_values(i, GMSH_SET, 
-				 WID->view_butt[25]->value());
+				 WID->view_butt[38]->value());
       
-      if(force || WID->view_butt[3]->changed() ||
-	 WID->view_butt[4]->changed() ||
-	 WID->view_butt[5]->changed() ||
-	 WID->view_butt[6]->changed())
+      if(force || WID->view_butt[30]->changed() ||
+	 WID->view_butt[31]->changed() ||
+	 WID->view_butt[32]->changed() ||
+	 WID->view_butt[33]->changed())
 	opt_view_intervals_type(i, GMSH_SET, 
-				WID->view_butt[3]->value()?DRAW_POST_ISO:
-				WID->view_butt[4]->value()?DRAW_POST_DISCRETE:
-				WID->view_butt[5]->value()?DRAW_POST_CONTINUOUS:
+				WID->view_butt[30]->value()?DRAW_POST_ISO:
+				WID->view_butt[31]->value()?DRAW_POST_DISCRETE:
+				WID->view_butt[32]->value()?DRAW_POST_CONTINUOUS:
 				DRAW_POST_NUMERIC);
 
-      if(force || WID->view_butt[7]->changed() ||
-	 WID->view_butt[8]->changed() ||
-	 WID->view_butt[9]->changed() ||
-	 WID->view_butt[10]->changed())
+      if(force || WID->view_butt[60]->changed() ||
+	 WID->view_butt[61]->changed() ||
+	 WID->view_butt[62]->changed() ||
+	 WID->view_butt[63]->changed())
 	opt_view_arrow_type(i, GMSH_SET, 
-			    WID->view_butt[7]->value()?DRAW_POST_SEGMENT:
-			    WID->view_butt[8]->value()?DRAW_POST_ARROW:
-			    WID->view_butt[9]->value()?DRAW_POST_CONE:
+			    WID->view_butt[60]->value()?DRAW_POST_SEGMENT:
+			    WID->view_butt[61]->value()?DRAW_POST_ARROW:
+			    WID->view_butt[62]->value()?DRAW_POST_CONE:
 			    DRAW_POST_DISPLACEMENT);
 
-      if(force || WID->view_butt[11]->changed() ||
-	 WID->view_butt[12]->changed())
+      if(force || WID->view_butt[64]->changed() ||
+	 WID->view_butt[65]->changed())
 	opt_view_arrow_location(i, GMSH_SET, 
-				WID->view_butt[11]->value()?DRAW_POST_LOCATE_COG:
+				WID->view_butt[64]->value()?DRAW_POST_LOCATE_COG:
 				DRAW_POST_LOCATE_VERTEX);
 
+      if(force || WID->view_butt[10]->changed())
+	opt_view_show_element(i, GMSH_SET, WID->view_butt[10]->value());
+
+      if(force || WID->view_butt[4]->changed())
+	opt_view_show_scale(i, GMSH_SET, WID->view_butt[4]->value());
+
+      if(force || WID->view_butt[50]->changed())
+	opt_view_show_time(i, GMSH_SET, WID->view_butt[50]->value());
+
+      if(force || WID->view_butt[5]->changed())
+	opt_view_transparent_scale(i, GMSH_SET, WID->view_butt[5]->value());
+
+      if(force || WID->view_butt[11]->changed())
+	opt_view_light(i,GMSH_SET,WID->view_butt[11]->value());
+
+      if(force || WID->view_butt[12]->changed())
+	opt_view_smooth_normals(i,GMSH_SET,WID->view_butt[12]->value());
+      
       if(force || WID->view_butt[13]->changed())
-	opt_view_show_element(i, GMSH_SET, WID->view_butt[13]->value());
+	opt_view_draw_points(i, GMSH_SET, WID->view_butt[13]->value());
 
       if(force || WID->view_butt[14]->changed())
-	opt_view_show_scale(i, GMSH_SET, WID->view_butt[14]->value());
+	opt_view_draw_lines(i, GMSH_SET, WID->view_butt[14]->value());
 
       if(force || WID->view_butt[15]->changed())
-	opt_view_show_time(i, GMSH_SET, WID->view_butt[15]->value());
+	opt_view_draw_triangles(i, GMSH_SET, WID->view_butt[15]->value());
 
       if(force || WID->view_butt[16]->changed())
-	opt_view_transparent_scale(i, GMSH_SET, WID->view_butt[16]->value());
+	opt_view_draw_tetrahedra(i, GMSH_SET, WID->view_butt[16]->value());
 
       if(force || WID->view_butt[17]->changed())
-	opt_view_light(i,GMSH_SET,WID->view_butt[17]->value());
+	opt_view_draw_scalars(i, GMSH_SET, WID->view_butt[17]->value());
 
-      if(force || WID->view_butt[27]->changed())
-	opt_view_smooth_normals(i,GMSH_SET,WID->view_butt[27]->value());
-      
       if(force || WID->view_butt[18]->changed())
-	opt_view_draw_points(i, GMSH_SET, WID->view_butt[18]->value());
+	opt_view_draw_vectors(i, GMSH_SET, WID->view_butt[18]->value());
 
       if(force || WID->view_butt[19]->changed())
-	opt_view_draw_lines(i, GMSH_SET, WID->view_butt[19]->value());
-
-      if(force || WID->view_butt[20]->changed())
-	opt_view_draw_triangles(i, GMSH_SET, WID->view_butt[20]->value());
-
-      if(force || WID->view_butt[21]->changed())
-	opt_view_draw_tetrahedra(i, GMSH_SET, WID->view_butt[21]->value());
-
-      if(force || WID->view_butt[22]->changed())
-	opt_view_draw_scalars(i, GMSH_SET, WID->view_butt[22]->value());
-
-      if(force || WID->view_butt[23]->changed())
-	opt_view_draw_vectors(i, GMSH_SET, WID->view_butt[23]->value());
-
-      if(force || WID->view_butt[24]->changed())
-	opt_view_draw_tensors(i, GMSH_SET, WID->view_butt[24]->value());
+	opt_view_draw_tensors(i, GMSH_SET, WID->view_butt[19]->value());
 
       // view_values
 
-      if(force || WID->view_value[0]->changed())
-	opt_view_custom_min(i, GMSH_SET, WID->view_value[0]->value());
+      if(force || WID->view_value[31]->changed())
+	opt_view_custom_min(i, GMSH_SET, WID->view_value[31]->value());
       
-      if(force || WID->view_value[1]->changed())
-	opt_view_custom_max(i, GMSH_SET, WID->view_value[1]->value());
+      if(force || WID->view_value[32]->changed())
+	opt_view_custom_max(i, GMSH_SET, WID->view_value[32]->value());
 
-      if(force || WID->view_value[2]->changed())
-	opt_view_nb_iso(i, GMSH_SET, WID->view_value[2]->value());
+      if(force || WID->view_value[30]->changed())
+	opt_view_nb_iso(i, GMSH_SET, WID->view_value[30]->value());
 
-      if(force || WID->view_value[3]->changed())
-	opt_view_offset0(i, GMSH_SET, WID->view_value[3]->value());
+      if(force || WID->view_value[40]->changed())
+	opt_view_offset0(i, GMSH_SET, WID->view_value[40]->value());
 
-      if(force || WID->view_value[4]->changed())
-	opt_view_offset1(i, GMSH_SET, WID->view_value[4]->value());
+      if(force || WID->view_value[41]->changed())
+	opt_view_offset1(i, GMSH_SET, WID->view_value[41]->value());
 
-      if(force || WID->view_value[5]->changed())
-	opt_view_offset2(i, GMSH_SET, WID->view_value[5]->value());
+      if(force || WID->view_value[42]->changed())
+	opt_view_offset2(i, GMSH_SET, WID->view_value[42]->value());
 
-      if(force || WID->view_value[6]->changed())
-	opt_view_raise0(i, GMSH_SET, WID->view_value[6]->value());
+      if(force || WID->view_value[43]->changed())
+	opt_view_raise0(i, GMSH_SET, WID->view_value[43]->value());
 
-      if(force || WID->view_value[7]->changed())
-	opt_view_raise1(i, GMSH_SET, WID->view_value[7]->value());
+      if(force || WID->view_value[44]->changed())
+	opt_view_raise1(i, GMSH_SET, WID->view_value[44]->value());
 
-      if(force || WID->view_value[8]->changed())
-	opt_view_raise2(i, GMSH_SET, WID->view_value[8]->value());
+      if(force || WID->view_value[45]->changed())
+	opt_view_raise2(i, GMSH_SET, WID->view_value[45]->value());
 
-      if(force || WID->view_value[9]->changed())
-	opt_view_timestep(i, GMSH_SET, WID->view_value[9]->value());
+      if(force || WID->view_value[50]->changed())
+	opt_view_timestep(i, GMSH_SET, WID->view_value[50]->value());
 
-      if(force || WID->view_value[10]->changed())
-	opt_view_arrow_scale(i, GMSH_SET, WID->view_value[10]->value());
+      if(force || WID->view_value[60]->changed())
+	opt_view_arrow_scale(i, GMSH_SET, WID->view_value[60]->value());
 
       if(force || WID->view_value[11]->changed())
 	opt_view_boundary(i, GMSH_SET, WID->view_value[11]->value());
@@ -1896,8 +1904,20 @@ void view_options_ok_cb(CALLBACK_ARGS){
       if(force || WID->view_value[12]->changed())
 	opt_view_explode(i, GMSH_SET, WID->view_value[12]->value());
 
-      if(force || WID->view_value[13]->changed())
-	opt_view_angle_smooth_normals(i,GMSH_SET,WID->view_value[13]->value());
+      if(force || WID->view_value[10]->changed())
+	opt_view_angle_smooth_normals(i,GMSH_SET,WID->view_value[10]->value());
+
+      if(force || WID->view_value[20]->changed())
+	opt_view_graph_position0(i,GMSH_SET,WID->view_value[20]->value());
+
+      if(force || WID->view_value[21]->changed())
+	opt_view_graph_position1(i,GMSH_SET,WID->view_value[21]->value());
+
+      if(force || WID->view_value[22]->changed())
+	opt_view_graph_size0(i,GMSH_SET,WID->view_value[22]->value());
+
+      if(force || WID->view_value[23]->changed())
+	opt_view_graph_size1(i,GMSH_SET,WID->view_value[23]->value());
 
       // view_inputs
 
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 8dab48453f04b8b0ff6c7edc1ef0a44d506d6060..e9810cd2f6cfdd3872e783947d3f0e24164758ca 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.118 2001-10-29 08:52:19 geuzaine Exp $
+// $Id: GUI.cpp,v 1.119 2001-10-29 16:06:55 geuzaine Exp $
 
 // To make the interface as visually consistent as possible, please:
 // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
@@ -1995,68 +1995,81 @@ void GUI::create_view_options_window(int num){
       { 
 	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "General");
 	o->labelsize(CTX.fontsize);
-        o->hide();
+
+	view_butt[1] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW, BH, "3D view");
+	view_butt[2] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW, BH, "2D space table");
+	view_butt[3] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "2D time table");
+	for(i=1 ; i<=3 ; i++){
+	  view_butt[i]->type(FL_RADIO_BUTTON);
+	  view_butt[i]->labelsize(CTX.fontsize);
+	  view_butt[i]->selection_color(FL_YELLOW);
+	  view_butt[i]->callback(set_changed_cb, 0);
+	}
 
 	view_input[0] = new Fl_Input(2*WB, 2*WB+1*BH, IW, BH, "Name");
 	view_input[1] = new Fl_Input(2*WB, 2*WB+2*BH, IW, BH, "Format");
-	for(i=0 ; i<2 ; i++){
+	for(i=0 ; i<=1 ; i++){
 	  view_input[i]->labelsize(CTX.fontsize);
 	  view_input[i]->textsize(CTX.fontsize);
 	  view_input[i]->align(FL_ALIGN_RIGHT);
 	  view_input[i]->callback(set_changed_cb, 0);
 	}
+        view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Show labels");	
+        view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Transparent labels");
+	for(i=4 ; i<=5 ; i++){
+	  view_butt[i]->type(FL_TOGGLE_BUTTON);
+	  view_butt[i]->down_box(FL_DOWN_BOX);
+	  view_butt[i]->labelsize(CTX.fontsize);
+	  view_butt[i]->selection_color(FL_YELLOW);
+	  view_butt[i]->callback(set_changed_cb, 0);
+	}
+
+        o->end();
+      }
+      // 3D
+      { 
+	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "3D");
+	o->labelsize(CTX.fontsize);
+        o->hide();
 
-        view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Show elements");
-        view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Show color bar");
-        view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Display time");
-        view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Transparent color bar");
-	view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Enable Lighting");
-
-	view_butt[27] = new Fl_Check_Button(2*WB, 2*WB+8*BH, BW, BH, "Smooth normals");	
-	view_butt[27]->type(FL_TOGGLE_BUTTON);
-	view_butt[27]->down_box(FL_DOWN_BOX);
-	view_butt[27]->labelsize(CTX.fontsize);
-	view_butt[27]->selection_color(FL_YELLOW);
-	view_butt[27]->callback(set_changed_cb, 0);
-
-	view_value[13] = new Fl_Value_Input(2*WB, 2*WB+9*BH, IW, BH, "Angle");
-	view_value[13]->labelsize(CTX.fontsize);
-	view_value[13]->textsize(CTX.fontsize);
-	view_value[13]->type(FL_HORIZONTAL);
-	view_value[13]->align(FL_ALIGN_RIGHT);
-	view_value[13]->minimum(0.); 
-	view_value[13]->step(1.); 
-	view_value[13]->maximum(180.); 
-	view_value[13]->callback(set_changed_cb, 0);
-
-	view_value[11] = new Fl_Value_Input(width/2, 2*WB+ 1*BH, IW, BH, "Boundary");
-	view_value[11]->labelsize(CTX.fontsize);
-	view_value[11]->textsize(CTX.fontsize);
-	view_value[11]->type(FL_HORIZONTAL);
-	view_value[11]->align(FL_ALIGN_RIGHT);
+        view_butt[10] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW, BH, "Show elements");
+	view_butt[11] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW, BH, "Enable Lighting");
+	view_butt[12] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Smooth normals");	
+	for(i=10 ; i<=12 ; i++){
+	  view_butt[i]->type(FL_TOGGLE_BUTTON);
+	  view_butt[i]->down_box(FL_DOWN_BOX);
+	  view_butt[i]->labelsize(CTX.fontsize);
+	  view_butt[i]->selection_color(FL_YELLOW);
+	  view_butt[i]->callback(set_changed_cb, 0);
+	}
+	view_value[10] = new Fl_Value_Input(width/2, 2*WB+4*BH, IW, BH, "Angle");
+	view_value[10]->minimum(0.); 
+	view_value[10]->step(1.); 
+	view_value[10]->maximum(180.); 
+	view_value[11] = new Fl_Value_Input(width/2, 2*WB+5*BH, IW, BH, "Boundary");
 	view_value[11]->minimum(0); 
 	view_value[11]->step(1); 
 	view_value[11]->maximum(3); 
-	view_value[11]->callback(set_changed_cb, 0);
-
-	view_value[12] = new Fl_Value_Input(width/2, 2*WB+ 2*BH, IW, BH, "Explode");
-	view_value[12]->labelsize(CTX.fontsize);
-	view_value[12]->textsize(CTX.fontsize);
-	view_value[12]->type(FL_HORIZONTAL);
-	view_value[12]->align(FL_ALIGN_RIGHT);
+	view_value[12] = new Fl_Value_Input(width/2, 2*WB+6*BH, IW, BH, "Explode");
 	view_value[12]->minimum(0.); 
 	view_value[12]->step(0.01); 
 	view_value[12]->maximum(1.); 
-	view_value[12]->callback(set_changed_cb, 0);
-
-        view_butt[18] = new Fl_Check_Button(width/2, 2*WB+3*BH, BW, BH, "Draw points");
-        view_butt[19] = new Fl_Check_Button(width/2, 2*WB+4*BH, BW, BH, "Draw lines");
-        view_butt[20] = new Fl_Check_Button(width/2, 2*WB+5*BH, BW, BH, "Draw triangles");
-        view_butt[21] = new Fl_Check_Button(width/2, 2*WB+6*BH, BW, BH, "Draw tetrahedra");
-        view_butt[22] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW, BH, "Draw scalar values");
-        view_butt[23] = new Fl_Check_Button(width/2, 2*WB+8*BH, BW, BH, "Draw vector values");
-        view_butt[24] = new Fl_Check_Button(width/2, 2*WB+9*BH, BW, BH, "Draw tensor values");
-	for(i=13 ; i<25 ; i++){
+	for(i=10 ; i<=12 ; i++){
+	  view_value[i]->labelsize(CTX.fontsize);
+	  view_value[i]->textsize(CTX.fontsize);
+	  view_value[i]->type(FL_HORIZONTAL);
+	  view_value[i]->align(FL_ALIGN_RIGHT);
+	  view_value[i]->callback(set_changed_cb, 0);
+	}
+
+        view_butt[13] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Draw points");
+        view_butt[14] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Draw lines");
+        view_butt[15] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Draw triangles");
+        view_butt[16] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Draw tetrahedra");
+        view_butt[17] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Draw scalar values");
+        view_butt[18] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Draw vector values");
+        view_butt[19] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Draw tensor values");
+	for(i=13 ; i<=19 ; i++){
 	  view_butt[i]->type(FL_TOGGLE_BUTTON);
 	  view_butt[i]->down_box(FL_DOWN_BOX);
 	  view_butt[i]->labelsize(CTX.fontsize);
@@ -2066,21 +2079,67 @@ void GUI::create_view_options_window(int num){
 
         o->end();
       }
+      // 2D
+      { 
+	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "2D");
+	o->labelsize(CTX.fontsize);
+        o->hide();
+	
+	view_value[20] = new Fl_Value_Input(2*WB, 2*WB+ 1*BH, IW, BH, "X position");
+	view_value[21] = new Fl_Value_Input(2*WB, 2*WB+ 2*BH, IW, BH, "Y position");
+	view_value[22] = new Fl_Value_Input(2*WB, 2*WB+ 3*BH, IW, BH, "Width");
+	view_value[23] = new Fl_Value_Input(2*WB, 2*WB+ 4*BH, IW, BH, "Height");
+	for(i=20 ; i<=23 ; i++){
+	  view_value[i]->labelsize(CTX.fontsize);
+	  view_value[i]->textsize(CTX.fontsize);
+	  view_value[i]->type(FL_HORIZONTAL);
+	  view_value[i]->align(FL_ALIGN_RIGHT);
+	  view_value[i]->callback(set_changed_cb, 0);
+	}
+
+        o->end();
+      }
       // Range
       { 
 	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Range");
 	o->labelsize(CTX.fontsize);
 	o->hide();
-        view_butt[0] = new Fl_Check_Button(2*WB, 2*WB+1*BH, BW, BH, "Custom range");
-	view_butt[0]->type(FL_TOGGLE_BUTTON);
-	view_butt[0]->down_box(FL_DOWN_BOX);
-	view_butt[0]->labelsize(CTX.fontsize);
-	view_butt[0]->selection_color(FL_YELLOW);
+
+	view_value[30] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Intervals");
+	view_value[30]->labelsize(CTX.fontsize);
+	view_value[30]->textsize(CTX.fontsize);
+	view_value[30]->type(FL_HORIZONTAL);
+	view_value[30]->align(FL_ALIGN_RIGHT);
+	view_value[30]->minimum(1); 
+	view_value[30]->maximum(256); 
+	view_value[30]->step(1);
+	view_value[30]->callback(set_changed_cb, 0);
+
+	{
+	  Fl_Group *o2 = new Fl_Group(2*WB, 2*WB+2*BH, width/2, 4*BH, 0);
+	  view_butt[30] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Iso-values");
+	  view_butt[31] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Filled iso-values");
+	  view_butt[32] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Continuous map");
+	  view_butt[33] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Numeric values");
+	  for(i=30 ; i<=33 ; i++){
+	    view_butt[i]->type(FL_RADIO_BUTTON);
+	    view_butt[i]->labelsize(CTX.fontsize);
+	    view_butt[i]->selection_color(FL_YELLOW);
+	    view_butt[i]->callback(set_changed_cb, 0);
+	  }
+	  o2->end();
+	}
+
+        view_butt[34] = new Fl_Check_Button(width/2, 2*WB+1*BH, BW, BH, "Custom range");
+	view_butt[34]->type(FL_TOGGLE_BUTTON);
+	view_butt[34]->down_box(FL_DOWN_BOX);
+	view_butt[34]->labelsize(CTX.fontsize);
+	view_butt[34]->selection_color(FL_YELLOW);
 	//no set_changed since customrange has its own callback
 
-        view_value[0] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Minimum");
-        view_value[1] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Maximum");
-	for(i=0 ; i<2 ; i++){
+        view_value[31] = new Fl_Value_Input(width/2, 2*WB+3*BH, IW, BH, "Minimum");
+        view_value[32] = new Fl_Value_Input(width/2, 2*WB+4*BH, IW, BH, "Maximum");
+	for(i=31 ; i<=32 ; i++){
 	  view_value[i]->labelsize(CTX.fontsize);
 	  view_value[i]->textsize(CTX.fontsize);
 	  view_value[i]->type(FL_HORIZONTAL);
@@ -2088,69 +2147,41 @@ void GUI::create_view_options_window(int num){
 	  view_value[i]->callback(set_changed_cb, 0);
 	}
 
-	view_butt[1] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Linear");
-	view_butt[2] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Logarithmic");
-	for(i=1 ; i<3 ; i++){
-	  view_butt[i]->type(FL_RADIO_BUTTON);
-	  view_butt[i]->labelsize(CTX.fontsize);
-	  view_butt[i]->selection_color(FL_YELLOW);
-	  view_butt[i]->callback(set_changed_cb, 0);
+	{
+	  Fl_Group *o2 = new Fl_Group(width/2, 2*WB+5*BH, width-4*WB, 3*BH, 0);
+	  view_butt[35] = new Fl_Check_Button(width/2, 2*WB+5*BH, BW, BH, "Linear");
+	  view_butt[36] = new Fl_Check_Button(width/2, 2*WB+6*BH, BW, BH, "Logarithmic");
+	  view_butt[37] = new Fl_Check_Button(width/2, 2*WB+7*BH, BW, BH, "Double logarithmic");
+	  for(i=35 ; i<=37 ; i++){
+	    view_butt[i]->type(FL_RADIO_BUTTON);
+	    view_butt[i]->labelsize(CTX.fontsize);
+	    view_butt[i]->selection_color(FL_YELLOW);
+	    view_butt[i]->callback(set_changed_cb, 0);
+	  }
+	  o2->end();
 	}
 
-	view_butt[26] = new Fl_Check_Button(2*WB, 2*WB+6*BH, BW, BH, "Double logarithmic");
-	view_butt[26]->type(FL_RADIO_BUTTON);
-	view_butt[26]->labelsize(CTX.fontsize);
-	view_butt[26]->selection_color(FL_YELLOW);
-	view_butt[26]->callback(set_changed_cb, 0);
-
-        view_butt[25] = new Fl_Check_Button(2*WB, 2*WB+7*BH, BW, BH, "Saturate values");
-	view_butt[25]->type(FL_TOGGLE_BUTTON);
-	view_butt[25]->down_box(FL_DOWN_BOX);
-	view_butt[25]->labelsize(CTX.fontsize);
-	view_butt[25]->selection_color(FL_YELLOW);
-	view_butt[25]->callback(set_changed_cb, 0);
+        view_butt[38] = new Fl_Check_Button(width/2, 2*WB+2*BH, BW, BH, "Saturate values");
+	view_butt[38]->type(FL_TOGGLE_BUTTON);
+	view_butt[38]->down_box(FL_DOWN_BOX);
+	view_butt[38]->labelsize(CTX.fontsize);
+	view_butt[38]->selection_color(FL_YELLOW);
+	view_butt[38]->callback(set_changed_cb, 0);
 
 	o->end();
       }
-      // Intervals
-      {
-	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Intervals");
-	o->labelsize(CTX.fontsize);
-	//view_intervals->hide();
-	view_value[2] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Number of intervals");
-	view_value[2]->labelsize(CTX.fontsize);
-	view_value[2]->textsize(CTX.fontsize);
-	view_value[2]->type(FL_HORIZONTAL);
-	view_value[2]->align(FL_ALIGN_RIGHT);
-	view_value[2]->minimum(1); 
-	view_value[2]->maximum(256); 
-	view_value[2]->step(1);
-	view_value[2]->callback(set_changed_cb, 0);
-
-	view_butt[3] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Iso-values");
-	view_butt[4] = new Fl_Check_Button(2*WB, 2*WB+3*BH, BW, BH, "Filled iso-values");
-	view_butt[5] = new Fl_Check_Button(2*WB, 2*WB+4*BH, BW, BH, "Continuous map");
-	view_butt[6] = new Fl_Check_Button(2*WB, 2*WB+5*BH, BW, BH, "Numeric values");
-	for(i=3 ; i<7 ; i++){
-	  view_butt[i]->type(FL_RADIO_BUTTON);
-	  view_butt[i]->labelsize(CTX.fontsize);
-	  view_butt[i]->selection_color(FL_YELLOW);
-	  view_butt[i]->callback(set_changed_cb, 0);
-	}
-        o->end();
-      }
       // Offset and Raise
       { 
 	Fl_Group *o = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Offset");
 	o->labelsize(CTX.fontsize);
         o->hide();
-	view_value[3] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "X offset");
-        view_value[4] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Y offset");
-	view_value[5] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Z offset");
-	view_value[6] = new Fl_Value_Input(width/2, 2*WB+1*BH, IW, BH, "X raise");
-        view_value[7] = new Fl_Value_Input(width/2, 2*WB+2*BH, IW, BH, "Y raise");
-	view_value[8] = new Fl_Value_Input(width/2, 2*WB+3*BH, IW, BH, "Z raise");
-	for(i=3 ; i<9 ; i++){
+	view_value[40] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "X offset");
+        view_value[41] = new Fl_Value_Input(2*WB, 2*WB+2*BH, IW, BH, "Y offset");
+	view_value[42] = new Fl_Value_Input(2*WB, 2*WB+3*BH, IW, BH, "Z offset");
+	view_value[43] = new Fl_Value_Input(width/2, 2*WB+1*BH, IW, BH, "X raise");
+        view_value[44] = new Fl_Value_Input(width/2, 2*WB+2*BH, IW, BH, "Y raise");
+	view_value[45] = new Fl_Value_Input(width/2, 2*WB+3*BH, IW, BH, "Z raise");
+	for(i=40 ; i<=45 ; i++){
 	  view_value[i]->labelsize(CTX.fontsize);
 	  view_value[i]->textsize(CTX.fontsize);
 	  view_value[i]->type(FL_HORIZONTAL);
@@ -2164,16 +2195,25 @@ void GUI::create_view_options_window(int num){
 	view_timestep = new Fl_Group(WB, WB+BH, width-2*WB, height-3*WB-2*BH, "Time step");
 	view_timestep->labelsize(CTX.fontsize);
         view_timestep->hide();
-	view_value[9] = new Fl_Value_Input(2*WB, 2*WB+BH, IW, BH, "Time step number");
-	view_value[9]->labelsize(CTX.fontsize);
-	view_value[9]->textsize(CTX.fontsize);
-	view_value[9]->type(FL_HORIZONTAL);
-	view_value[9]->align(FL_ALIGN_RIGHT);
-	view_value[9]->minimum(0); 
-	view_value[9]->maximum(0); 
-	view_value[9]->step(1);
-	view_timestep->end();
+
+	view_value[50] = new Fl_Value_Input(2*WB, 2*WB+1*BH, IW, BH, "Time step number");
+	view_value[50]->labelsize(CTX.fontsize);
+	view_value[50]->textsize(CTX.fontsize);
+	view_value[50]->type(FL_HORIZONTAL);
+	view_value[50]->align(FL_ALIGN_RIGHT);
+	view_value[50]->minimum(0); 
+	view_value[50]->maximum(0); 
+	view_value[50]->step(1);
 	//no set_changed since timestep has its own callback
+
+        view_butt[50] = new Fl_Check_Button(2*WB, 2*WB+2*BH, BW, BH, "Display time");
+	view_butt[50]->type(FL_TOGGLE_BUTTON);
+	view_butt[50]->down_box(FL_DOWN_BOX);
+	view_butt[50]->labelsize(CTX.fontsize);
+	view_butt[50]->selection_color(FL_YELLOW);
+	view_butt[50]->callback(set_changed_cb, 0);
+
+	view_timestep->end();
       }
       // Vector display
       { 
@@ -2182,38 +2222,33 @@ void GUI::create_view_options_window(int num){
         view_vector->hide();
 
 	{
-	  Fl_Group *o = new Fl_Group(2*WB, WB+BH, width-4*WB, 2*BH, 0);
-	  view_butt[7] = new Fl_Check_Button(2*WB, 2*WB+1*BH, IW, BH, "Line");
-	  view_butt[8] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Arrow");
-	  view_butt[9] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Cone");
-	  view_butt[10] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Displacement");
-	  for(i=7 ; i<11 ; i++){
-	    view_butt[i]->type(FL_RADIO_BUTTON);
-	    view_butt[i]->labelsize(CTX.fontsize);
-	    view_butt[i]->selection_color(FL_YELLOW);
-	    view_butt[i]->callback(set_changed_cb, 0);
-	  }
+	  Fl_Group *o = new Fl_Group(width/2, 2*WB+1*BH, width-4*WB, 4*BH, 0);
+	  view_butt[60] = new Fl_Check_Button(width/2, 2*WB+1*BH, IW, BH, "Line");
+	  view_butt[61] = new Fl_Check_Button(width/2, 2*WB+2*BH, IW, BH, "Arrow");
+	  view_butt[62] = new Fl_Check_Button(width/2, 2*WB+3*BH, IW, BH, "Cone");
+	  view_butt[63] = new Fl_Check_Button(width/2, 2*WB+4*BH, IW, BH, "Displacement");
 	  o->end();
 	}
 	{
-	  Fl_Group *o = new Fl_Group(2*WB, WB+3*BH, width-4*WB, 2*BH, 0);
-	  view_butt[11] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Cell centered");
-	  view_butt[12] = new Fl_Check_Button(2*WB, 2*WB+4*BH, IW, BH, "Vertex centered");
-	  for(i=11 ; i<13 ; i++){
-	    view_butt[i]->type(FL_RADIO_BUTTON);
-	    view_butt[i]->labelsize(CTX.fontsize);
-	    view_butt[i]->selection_color(FL_YELLOW);
-	    view_butt[i]->callback(set_changed_cb, 0);
-	  }
+	  Fl_Group *o = new Fl_Group(2*WB, 2*WB+2*BH, width-4*WB, 2*BH, 0);
+	  view_butt[64] = new Fl_Check_Button(2*WB, 2*WB+2*BH, IW, BH, "Cell centered");
+	  view_butt[65] = new Fl_Check_Button(2*WB, 2*WB+3*BH, IW, BH, "Vertex centered");
 	  o->end();
 	}
-	view_value[10] = new Fl_Value_Input(2*WB, 2*WB+ 5*BH, IW, BH, "Vector scale");
-	view_value[10]->labelsize(CTX.fontsize);
-	view_value[10]->textsize(CTX.fontsize);
-	view_value[10]->type(FL_HORIZONTAL);
-	view_value[10]->align(FL_ALIGN_RIGHT);
-	view_value[10]->minimum(0); 
-	view_value[10]->callback(set_changed_cb, 0);
+	for(i=60 ; i<=65 ; i++){
+	  view_butt[i]->type(FL_RADIO_BUTTON);
+	  view_butt[i]->labelsize(CTX.fontsize);
+	  view_butt[i]->selection_color(FL_YELLOW);
+	  view_butt[i]->callback(set_changed_cb, 0);
+	}
+
+	view_value[60] = new Fl_Value_Input(2*WB, 2*WB+ 1*BH, IW, BH, "Size");
+	view_value[60]->labelsize(CTX.fontsize);
+	view_value[60]->textsize(CTX.fontsize);
+	view_value[60]->type(FL_HORIZONTAL);
+	view_value[60]->align(FL_ALIGN_RIGHT);
+	view_value[60]->minimum(0); 
+	view_value[60]->callback(set_changed_cb, 0);
 	view_vector->end();
       }
       // Colors
@@ -2268,12 +2303,19 @@ void GUI::update_view_window(int num){
   view_window->label(buffer);
 
   // general
-  opt_view_show_element(num, GMSH_GUI, 0);
-  opt_view_show_scale(num, GMSH_GUI, 0);
-  opt_view_show_time(num, GMSH_GUI, 0);
-  opt_view_transparent_scale(num, GMSH_GUI, 0);
   opt_view_name(num, GMSH_GUI, NULL);
   opt_view_format(num, GMSH_GUI, NULL);
+  opt_view_graph_type(num, GMSH_GUI, 0);
+  opt_view_show_scale(num, GMSH_GUI, 0);
+  opt_view_transparent_scale(num, GMSH_GUI, 0);
+
+  //3D
+  opt_view_show_element(num, GMSH_GUI, 0);
+  opt_view_light(num, GMSH_GUI, 0);
+  opt_view_smooth_normals(num, GMSH_GUI, 0);
+  opt_view_angle_smooth_normals(num, GMSH_GUI, 0);
+  opt_view_boundary(num, GMSH_GUI, 0);
+  opt_view_explode(num, GMSH_GUI, 0);
   opt_view_draw_points(num, GMSH_GUI, 0);
   opt_view_draw_lines(num, GMSH_GUI, 0);
   opt_view_draw_triangles(num, GMSH_GUI, 0);
@@ -2282,26 +2324,28 @@ void GUI::update_view_window(int num){
   opt_view_draw_vectors(num, GMSH_GUI, 0);
   opt_view_draw_tensors(num, GMSH_GUI, 0);
 
+  //2D
+  opt_view_graph_position0(num, GMSH_GUI, 0);
+  opt_view_graph_position1(num, GMSH_GUI, 0);
+  opt_view_graph_size0(num, GMSH_GUI, 0);
+  opt_view_graph_size1(num, GMSH_GUI, 0);
+
   // range
+  opt_view_nb_iso(num, GMSH_GUI, 0);
+  opt_view_intervals_type(num, GMSH_GUI, 0);
   opt_view_range_type(num, GMSH_GUI, 0);
-  view_butt[0]->callback(view_options_custom_cb, (void*)num);
+  view_butt[34]->callback(view_options_custom_cb, (void*)num);
   view_options_custom_cb(0,0);
-  view_butt[0]->clear_changed();
+  view_butt[34]->clear_changed();
   opt_view_custom_min(num, GMSH_GUI, 0);
   opt_view_custom_max(num, GMSH_GUI, 0);
-  for(i=0 ; i<2 ; i++){
+  for(i=31 ; i<=32 ; i++){
     view_value[i]->minimum(v->CustomMin); 
     view_value[i]->maximum(v->CustomMax); 
   }
   opt_view_scale_type(num, GMSH_GUI, 0);
   opt_view_saturate_values(num, GMSH_GUI, 0);
 
-  // intervals
-  opt_view_nb_iso(num, GMSH_GUI, 0);
-  opt_view_intervals_type(num, GMSH_GUI, 0);
-  opt_view_boundary(num, GMSH_GUI, 0);
-  opt_view_explode(num, GMSH_GUI, 0);
-
   // offset/raise
   opt_view_offset0(num, GMSH_GUI, 0);
   opt_view_offset1(num, GMSH_GUI, 0);
@@ -2310,7 +2354,7 @@ void GUI::update_view_window(int num){
   opt_view_raise1(num, GMSH_GUI, 0);
   opt_view_raise2(num, GMSH_GUI, 0);
   val = 10.*CTX.lc ;
-  for(i=3 ; i<9 ; i++){
+  for(i=40 ; i<=45 ; i++){
     view_value[i]->step(val,1000); 
     view_value[i]->minimum(-val); 
     view_value[i]->maximum(val); 
@@ -2319,9 +2363,10 @@ void GUI::update_view_window(int num){
   // timestep
   if(v->NbTimeStep==1) view_timestep->deactivate();
   else view_timestep->activate();
-  view_value[9]->callback(view_options_timestep_cb, (void*)num);
-  view_value[9]->maximum(v->NbTimeStep-1); 
+  view_value[50]->callback(view_options_timestep_cb, (void*)num);
+  view_value[50]->maximum(v->NbTimeStep-1); 
   opt_view_timestep(num, GMSH_GUI, 0);
+  opt_view_show_time(num, GMSH_GUI, 0);
 
   // vector
   if(v->ScalarOnly) view_vector->deactivate();
@@ -2333,14 +2378,8 @@ void GUI::update_view_window(int num){
   // colors
   view_colorbar_window->update(v->Name, v->Min, v->Max, &v->CT, &v->Changed);
 
-  // light
-  opt_view_light(num, GMSH_GUI, 0);
-  opt_view_smooth_normals(num, GMSH_GUI, 0);
-  opt_view_angle_smooth_normals(num, GMSH_GUI, 0);
-
   // OK
   view_ok->callback(view_options_ok_cb, (void*)num);
-
 }
 
 //*************** Create the window for geometry context dependant definitions *********
diff --git a/Fltk/GUI.h b/Fltk/GUI.h
index 79c601a8ac720a5456a9ad34da1b33d451da0779..1c8859e1c63f27ba633f9367cef137aca7e5e2e5 100644
--- a/Fltk/GUI.h
+++ b/Fltk/GUI.h
@@ -160,7 +160,7 @@ public:
   int init_view_window, view_number ;
   Fl_Window        *view_window ;
   Fl_Group         *view_timestep, *view_vector ;
-#define VIEW_OPT_BUTT 50
+#define VIEW_OPT_BUTT 100
   Fl_Check_Button  *view_butt[VIEW_OPT_BUTT] ;
   Fl_Value_Input   *view_value[VIEW_OPT_BUTT] ;
   Fl_Input         *view_input[VIEW_OPT_BUTT] ;