diff --git a/Common/Context.h b/Common/Context.h
index 5fcef16d91dee9b0e8129c05089e8d450ae7bf80..d75b207c4fa594cd21b5ca52b3564b2dde8d0d88 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -78,7 +78,7 @@ class CTX {
   int sessionSave, optionsSave;
   // ask confirmation when overwriting files?
   int confirmOverwrite;
-  // forced display host:0.0 under X11 
+  // forced display host:0.0 under X11
   std::string display;
   // FLTK theme
   std::string guiTheme;
@@ -103,7 +103,7 @@ class CTX {
   // batch mode (-4: lua session, -3: server daemon, -2: check coherence, -1: write
   // geo, 0: full gfx, 1: 1D mesh, 2: 2D mesh, 3: 3D mesh, 4: adapt
   // mesh, 5: refine mesh)
-  int batch; 
+  int batch;
   // batch operations to apply after meshing (1: partition mesh)
   int batchAfterMesh;
   // initial menu (0: automatic, 1: geom, 2: mesh, 3: solver, 4: post)
@@ -132,7 +132,7 @@ class CTX {
   // double buffer/antialias/stereo graphics?
   int db, antialiasing, stereo, camera;
   double eye_sep_ratio,focallength_ratio,camera_aperture;
-  // orthogonal projection? 
+  // orthogonal projection?
   int ortho;
   // draw the bounding boxes and the rot center?
   int drawBBox, drawRotationCenter;
@@ -144,7 +144,7 @@ class CTX {
   int axes, axesAutoPosition, axesTics[3], axesMikado;
   double axesPosition[6];
   std::string axesLabel[3], axesFormat[3];
-  // simple dynamic lock (should be a mutex) 
+  // simple dynamic lock (should be a mutex)
   int lock;
   // enable alpha blending?
   int alpha;
@@ -195,29 +195,29 @@ class CTX {
   // temporary storage of rotation, translation, scale (until the GUI
   // is ready)
   double tmpRotation[3], tmpTranslation[3], tmpScale[3], tmpQuaternion[4];
-  // geometry options 
+  // geometry options
   contextGeometryOptions geom;
-  // mesh options 
+  // mesh options
   contextMeshOptions mesh;
-  // FIXME: putting these in the mesh struct (where they belong) causes 
+  // FIXME: putting these in the mesh struct (where they belong) causes
   // an LNK1179 error ("duplicate COMDAT") with MSVC...
   meshPartitionOptions partitionOptions;
   CGNSOptions cgnsOptions;
-  // post processing options 
+  // post processing options
   struct{
     int draw, link, horizontalScales;
     int smooth, animCycle, animStep, combineTime, combineRemoveOrig;
     int fileFormat, plugins;
     double animDelay;
   }post;
-  // solver options 
+  // solver options
   struct{
     int plugins, listen;
     double timeout;
     std::string socketName;
-    std::string name[5], commandLine[5];
+    std::string name[5], executable[5], hostname[5];
   }solver;
-  // print options 
+  // print options
   struct{
     int fileFormat, epsQuality, epsCompress, epsPS3Shading;
     int epsOcclusionCulling, epsBestRoot;
@@ -253,7 +253,7 @@ class CTX {
   int unpackGreen(unsigned int X);
   int unpackBlue(unsigned int X);
   int unpackAlpha(unsigned int X);
-  
+
 };
 
 #endif
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index 075cf12384be46e48aa9ef54f55b4ab1e833884c..0292790898b9a17db4aa909ae15f8094fac01cf7 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -10,7 +10,7 @@
 #include "GmshDefines.h"
 #include "Options.h"
 
-//          PLEASE RESPECT THE ALPHABETICAL ORDER WHEN 
+//          PLEASE RESPECT THE ALPHABETICAL ORDER WHEN
 //                    INSERTING A NEW OPTION!
 //
 // Option Database (General, Geometry, Mesh, Post, View, Print), with
@@ -25,17 +25,17 @@
 // STRINGS
 
 StringXString GeneralOptions_String[] = {
-  { F|O, "AxesFormatX" , opt_general_axes_format0 , "%.3g" , 
+  { F|O, "AxesFormatX" , opt_general_axes_format0 , "%.3g" ,
     "Number format for X-axis (in standard C form)" },
-  { F|O, "AxesFormatY" , opt_general_axes_format1 , "%.3g" , 
+  { F|O, "AxesFormatY" , opt_general_axes_format1 , "%.3g" ,
     "Number format for Y-axis (in standard C form)" },
-  { F|O, "AxesFormatZ" , opt_general_axes_format2 , "%.3g" , 
+  { F|O, "AxesFormatZ" , opt_general_axes_format2 , "%.3g" ,
     "Number format for Z-axis (in standard C form)" },
-  { F|O, "AxesLabelX" , opt_general_axes_label0 , "" , 
+  { F|O, "AxesLabelX" , opt_general_axes_label0 , "" ,
     "X-axis label" },
-  { F|O, "AxesLabelY" , opt_general_axes_label1 , "" , 
+  { F|O, "AxesLabelY" , opt_general_axes_label1 , "" ,
     "Y-axis label" },
-  { F|O, "AxesLabelZ" , opt_general_axes_label2 , "" , 
+  { F|O, "AxesLabelZ" , opt_general_axes_label2 , "" ,
     "Z-axis label" },
 
   { F|O, "BackgroundImageFileName" , opt_general_background_image_filename , "" ,
@@ -49,15 +49,15 @@ StringXString GeneralOptions_String[] = {
   { F|O, "ErrorFileName" , opt_general_error_filename , ".gmsh-errors" ,
     "File into which the log is saved if a fatal error occurs" },
 
-  { F,   "FileName" , opt_general_filename , "" , 
+  { F,   "FileName" , opt_general_filename , "" ,
     "Current project file name (read-only)" },
   { F|O, "FltkTheme" , opt_general_gui_theme , "" ,
     "FLTK user interface theme (try e.g. plastic or gtk+)" },
 
   { F|O, "GraphicsFont" , opt_general_graphics_font , "Helvetica" ,
-    "Font used in the graphic window" }, 
+    "Font used in the graphic window" },
   { F|O, "GraphicsFontTitle" , opt_general_graphics_font_title , "Helvetica" ,
-    "Font used in the graphic window for titles" }, 
+    "Font used in the graphic window for titles" },
 
   { F|S, "OptionsFileName" , opt_general_options_filename , ".gmsh-options" ,
     "Option file created with `Tools->Options->Save'; automatically read on startup" },
@@ -72,14 +72,14 @@ StringXString GeneralOptions_String[] = {
     "4th most recent opened file"},
   { F|S, "RecentFile4", opt_general_recent_file4 , "untitled.geo" ,
     "5th most recent opened file"},
-  
+
   { 0,   "SessionFileName" , opt_general_session_filename , ".gmshrc" ,
     "Option file into which session specific information is saved; automatically "
     "read on startup" },
 
-  { F|O, "TextEditor" , opt_general_editor , 
+  { F|O, "TextEditor" , opt_general_editor ,
 #if defined(WIN32)
-    "notepad.exe %s" , 
+    "notepad.exe %s" ,
 #elif defined(__APPLE__)
     "open -t %s" ,
 #else
@@ -89,9 +89,9 @@ StringXString GeneralOptions_String[] = {
   { F|S, "TmpFileName" , opt_general_tmp_filename , ".gmsh-tmp" ,
     "Temporary file used by the geometry module" },
 
-  { F|O, "WebBrowser" , opt_general_web_browser , 
+  { F|O, "WebBrowser" , opt_general_web_browser ,
 #if defined(WIN32)
-    "explorer.exe %s" , 
+    "explorer.exe %s" ,
 #elif defined(__APPLE__)
     "open %s" ,
 #else
@@ -116,15 +116,26 @@ StringXString MeshOptions_String[] = {
 StringXString SolverOptions_String[] = {
   { F|S, "Executable0" , opt_solver_executable0 , "",
     "System command to launch solver 0" },
-  { F|S, "Executable1" , opt_solver_executable1 , "" , 
+  { F|S, "Executable1" , opt_solver_executable1 , "" ,
     "System command to launch solver 1" },
-  { F|S, "Executable2" , opt_solver_executable2 , "" , 
+  { F|S, "Executable2" , opt_solver_executable2 , "" ,
     "System command to launch solver 2" },
-  { F|S, "Executable3" , opt_solver_executable3 , "" , 
+  { F|S, "Executable3" , opt_solver_executable3 , "" ,
     "System command to launch solver 3" },
-  { F|S, "Executable4" , opt_solver_executable4 , "" , 
+  { F|S, "Executable4" , opt_solver_executable4 , "" ,
     "System command to launch solver 4" },
 
+  { F|S, "Hostname0" , opt_solver_hostname0 , "",
+    "Hostname where to launch solver 0" },
+  { F|S, "Hostname1" , opt_solver_hostname1 , "" ,
+    "Hostname where to launch solver 1" },
+  { F|S, "Hostname2" , opt_solver_hostname2 , "" ,
+    "Hostname where to launch solver 2" },
+  { F|S, "Hostname3" , opt_solver_hostname3 , "" ,
+    "Hostname where to launch solver 3" },
+  { F|S, "Hostname4" , opt_solver_hostname4 , "" ,
+    "Hostname where to launch solver 4" },
+
   { F|S, "Name0" , opt_solver_name0 , "GetDP" ,
     "Name of solver 0" },
   { F|S, "Name1" , opt_solver_name1 , "" ,
@@ -136,7 +147,7 @@ StringXString SolverOptions_String[] = {
   { F|S, "Name4" , opt_solver_name4 , "" ,
     "Name of solver 4" },
 
-  { F|O, "SocketName" , opt_solver_socket_name , 
+  { F|O, "SocketName" , opt_solver_socket_name ,
 #if defined(WIN32) && !defined(__CYGWIN__)
     "127.0.0.1:4412" , // use TCP/IP sockets by default on Windows
 #else
@@ -152,53 +163,53 @@ StringXString PostProcessingOptions_String[] = {
 } ;
 
 StringXString ViewOptions_String[] = {
-  { F|O, "AxesFormatX" , opt_view_axes_format0 , "%.3g" , 
+  { F|O, "AxesFormatX" , opt_view_axes_format0 , "%.3g" ,
     "Number format for X-axis (in standard C form)" },
-  { F|O, "AxesFormatY" , opt_view_axes_format1 , "%.3g" , 
+  { F|O, "AxesFormatY" , opt_view_axes_format1 , "%.3g" ,
     "Number format for Y-axis (in standard C form)" },
-  { F|O, "AxesFormatZ" , opt_view_axes_format2 , "%.3g" , 
+  { F|O, "AxesFormatZ" , opt_view_axes_format2 , "%.3g" ,
     "Number format for Z-axis (in standard C form)" },
-  { F|O, "AxesLabelX" , opt_view_axes_label0 , "" , 
+  { F|O, "AxesLabelX" , opt_view_axes_label0 , "" ,
     "X-axis label" },
-  { F|O, "AxesLabelY" , opt_view_axes_label1 , "" , 
+  { F|O, "AxesLabelY" , opt_view_axes_label1 , "" ,
     "Y-axis label" },
-  { F|O, "AxesLabelZ" , opt_view_axes_label2 , "" , 
+  { F|O, "AxesLabelZ" , opt_view_axes_label2 , "" ,
     "Z-axis label" },
 
-  { F,   "FileName" , opt_view_filename , "" , 
+  { F,   "FileName" , opt_view_filename , "" ,
     "Default post-processing view file name" },
-  { F|O, "Format" , opt_view_format , "%.3g" , 
+  { F|O, "Format" , opt_view_format , "%.3g" ,
     "Number format (in standard C form)" },
 
-  { F|O, "GeneralizedRaiseX" , opt_view_gen_raise0 , "v0" , 
+  { F|O, "GeneralizedRaiseX" , opt_view_gen_raise0 , "v0" ,
     "Generalized elevation of the view along X-axis (in model coordinates)" },
-  { F|O, "GeneralizedRaiseY" , opt_view_gen_raise1 , "v1" , 
+  { F|O, "GeneralizedRaiseY" , opt_view_gen_raise1 , "v1" ,
     "Generalized elevation of the view along Y-axis (in model coordinates)" },
-  { F|O, "GeneralizedRaiseZ" , opt_view_gen_raise2 , "v2" , 
+  { F|O, "GeneralizedRaiseZ" , opt_view_gen_raise2 , "v2" ,
     "Generalized elevation of the view along Z-axis (in model coordinates)" },
 
-  { F,   "Name" , opt_view_name , "" , 
+  { F,   "Name" , opt_view_name , "" ,
     "Default post-processing view name" },
 
-  { F|O, "Stipple0" , opt_view_stipple0 , "1*0x1F1F" , 
+  { F|O, "Stipple0" , opt_view_stipple0 , "1*0x1F1F" ,
     "First stippling pattern" },
-  { F|O, "Stipple1" , opt_view_stipple1 , "1*0x3333" , 
+  { F|O, "Stipple1" , opt_view_stipple1 , "1*0x3333" ,
     "Second stippling pattern" },
-  { F|O, "Stipple2" , opt_view_stipple2 , "1*0x087F" , 
+  { F|O, "Stipple2" , opt_view_stipple2 , "1*0x087F" ,
     "Third stippling pattern" },
-  { F|O, "Stipple3" , opt_view_stipple3 , "1*0xCCCF" , 
+  { F|O, "Stipple3" , opt_view_stipple3 , "1*0xCCCF" ,
     "Fourth stippling pattern" },
-  { F|O, "Stipple4" , opt_view_stipple4 , "2*0x1111" , 
+  { F|O, "Stipple4" , opt_view_stipple4 , "2*0x1111" ,
     "Fifth stippling pattern" },
-  { F|O, "Stipple5" , opt_view_stipple5 , "2*0x0F0F" , 
+  { F|O, "Stipple5" , opt_view_stipple5 , "2*0x0F0F" ,
     "Sixth stippling pattern" },
-  { F|O, "Stipple6" , opt_view_stipple6 , "1*0xCFFF" , 
+  { F|O, "Stipple6" , opt_view_stipple6 , "1*0xCFFF" ,
     "Seventh stippling pattern" },
-  { F|O, "Stipple7" , opt_view_stipple7 , "2*0x0202" , 
+  { F|O, "Stipple7" , opt_view_stipple7 , "2*0x0202" ,
     "Eighth stippling pattern" },
-  { F|O, "Stipple8" , opt_view_stipple8 , "2*0x087F" , 
+  { F|O, "Stipple8" , opt_view_stipple8 , "2*0x087F" ,
     "Ninth stippling pattern" },
-  { F|O, "Stipple9" , opt_view_stipple9 , "1*0xFFFF" , 
+  { F|O, "Stipple9" , opt_view_stipple9 , "1*0xFFFF" ,
     "Tenth stippling pattern" },
 
   { 0, 0 , 0 , "" , 0 }
@@ -223,22 +234,22 @@ StringXNumber GeneralOptions_Number[] = {
     "Relative radius of arrow stem" },
   { F|O, "Axes" , opt_general_axes , 0. ,
     "Axes (0=none, 1=simple axes, 2=box, 3=full grid, 4=open grid, 5=ruler)" },
-  { F|O, "AxesMikado" , opt_general_axes_mikado , 0. , 
-    "Mikado axes style" }, 
-  { F|O, "AxesAutoPosition" , opt_general_axes_auto_position , 1. , 
-    "Position the axes automatically" }, 
-  { F|O, "AxesMaxX" , opt_general_axes_xmax , 1. , 
-    "Maximum X-axis coordinate" }, 
-  { F|O, "AxesMaxY" , opt_general_axes_ymax , 1. , 
-    "Maximum Y-axis coordinate" }, 
-  { F|O, "AxesMaxZ" , opt_general_axes_zmax , 1. , 
-    "Maximum Z-axis coordinate" }, 
-  { F|O, "AxesMinX" , opt_general_axes_xmin , 0. , 
-    "Minimum X-axis coordinate" }, 
-  { F|O, "AxesMinY" , opt_general_axes_ymin , 0. , 
-    "Minimum Y-axis coordinate" }, 
-  { F|O, "AxesMinZ" , opt_general_axes_zmin , 0. , 
-    "Minimum Z-axis coordinate" }, 
+  { F|O, "AxesMikado" , opt_general_axes_mikado , 0. ,
+    "Mikado axes style" },
+  { F|O, "AxesAutoPosition" , opt_general_axes_auto_position , 1. ,
+    "Position the axes automatically" },
+  { F|O, "AxesMaxX" , opt_general_axes_xmax , 1. ,
+    "Maximum X-axis coordinate" },
+  { F|O, "AxesMaxY" , opt_general_axes_ymax , 1. ,
+    "Maximum Y-axis coordinate" },
+  { F|O, "AxesMaxZ" , opt_general_axes_zmax , 1. ,
+    "Maximum Z-axis coordinate" },
+  { F|O, "AxesMinX" , opt_general_axes_xmin , 0. ,
+    "Minimum X-axis coordinate" },
+  { F|O, "AxesMinY" , opt_general_axes_ymin , 0. ,
+    "Minimum Y-axis coordinate" },
+  { F|O, "AxesMinZ" , opt_general_axes_zmin , 0. ,
+    "Minimum Z-axis coordinate" },
   { F|O, "AxesTicsX" , opt_general_axes_tics0 , 5. ,
     "Number of tics on the X-axis" },
   { F|O, "AxesTicsY" , opt_general_axes_tics1 , 5. ,
@@ -265,78 +276,78 @@ StringXNumber GeneralOptions_Number[] = {
     "Camera Focal length ratio" },
   { F,   "Clip0A" , opt_general_clip0a , 1.0 ,
     "First coefficient in equation for clipping plane 0 (`A' in `AX+BY+CZ+D=0')" },
-  { F,   "Clip0B" , opt_general_clip0b , 0.0 , 
+  { F,   "Clip0B" , opt_general_clip0b , 0.0 ,
     "Second coefficient in equation for clipping plane 0 (`B' in `AX+BY+CZ+D=0')" },
-  { F,   "Clip0C" , opt_general_clip0c , 0.0 , 
+  { F,   "Clip0C" , opt_general_clip0c , 0.0 ,
     "Third coefficient in equation for clipping plane 0 (`C' in `AX+BY+CZ+D=0')" },
-  { F,   "Clip0D" , opt_general_clip0d , 0.0 , 
+  { F,   "Clip0D" , opt_general_clip0d , 0.0 ,
     "Fourth coefficient in equation for clipping plane 0 (`D' in `AX+BY+CZ+D=0')" },
-  { F,   "Clip1A" , opt_general_clip1a , 0.0 , 
+  { F,   "Clip1A" , opt_general_clip1a , 0.0 ,
     "First coefficient in equation for clipping plane 1" },
-  { F,   "Clip1B" , opt_general_clip1b , 1.0 , 
+  { F,   "Clip1B" , opt_general_clip1b , 1.0 ,
     "Second coefficient in equation for clipping plane 1" },
-  { F,   "Clip1C" , opt_general_clip1c , 0.0 , 
+  { F,   "Clip1C" , opt_general_clip1c , 0.0 ,
     "Third coefficient in equation for clipping plane 1" },
-  { F,   "Clip1D" , opt_general_clip1d , 0.0 , 
+  { F,   "Clip1D" , opt_general_clip1d , 0.0 ,
     "Fourth coefficient in equation for clipping plane 1" },
-  { F,   "Clip2A" , opt_general_clip2a , 0.0 , 
+  { F,   "Clip2A" , opt_general_clip2a , 0.0 ,
     "First coefficient in equation for clipping plane 2" },
-  { F,   "Clip2B" , opt_general_clip2b , 0.0 , 
+  { F,   "Clip2B" , opt_general_clip2b , 0.0 ,
     "Second coefficient in equation for clipping plane 2" },
-  { F,   "Clip2C" , opt_general_clip2c , 1.0 , 
+  { F,   "Clip2C" , opt_general_clip2c , 1.0 ,
     "Third coefficient in equation for clipping plane 2" },
-  { F,   "Clip2D" , opt_general_clip2d , 0.0 , 
+  { F,   "Clip2D" , opt_general_clip2d , 0.0 ,
     "Fourth coefficient in equation for clipping plane 2" },
-  { F,   "Clip3A" , opt_general_clip3a , -1.0 , 
+  { F,   "Clip3A" , opt_general_clip3a , -1.0 ,
     "First coefficient in equation for clipping plane 3" },
-  { F,   "Clip3B" , opt_general_clip3b , 0.0 , 
+  { F,   "Clip3B" , opt_general_clip3b , 0.0 ,
     "Second coefficient in equation for clipping plane 3" },
-  { F,   "Clip3C" , opt_general_clip3c , 0.0 , 
+  { F,   "Clip3C" , opt_general_clip3c , 0.0 ,
     "Third coefficient in equation for clipping plane 3" },
-  { F,   "Clip3D" , opt_general_clip3d , 1.0 , 
+  { F,   "Clip3D" , opt_general_clip3d , 1.0 ,
     "Fourth coefficient in equation for clipping plane 3" },
-  { F,   "Clip4A" , opt_general_clip4a , 0.0 , 
+  { F,   "Clip4A" , opt_general_clip4a , 0.0 ,
     "First coefficient in equation for clipping plane 4" },
-  { F,   "Clip4B" , opt_general_clip4b , -1.0 , 
+  { F,   "Clip4B" , opt_general_clip4b , -1.0 ,
     "Second coefficient in equation for clipping plane 4" },
-  { F,   "Clip4C" , opt_general_clip4c , 0.0 , 
+  { F,   "Clip4C" , opt_general_clip4c , 0.0 ,
     "Third coefficient in equation for clipping plane 4" },
-  { F,   "Clip4D" , opt_general_clip4d , 1.0 , 
+  { F,   "Clip4D" , opt_general_clip4d , 1.0 ,
     "Fourth coefficient in equation for clipping plane 4" },
-  { F,   "Clip5A" , opt_general_clip5a , 0.0 , 
+  { F,   "Clip5A" , opt_general_clip5a , 0.0 ,
     "First coefficient in equation for clipping plane 5" },
-  { F,   "Clip5B" , opt_general_clip5b , 0.0 , 
+  { F,   "Clip5B" , opt_general_clip5b , 0.0 ,
     "Second coefficient in equation for clipping plane 5" },
-  { F,   "Clip5C" , opt_general_clip5c , -1.0 , 
+  { F,   "Clip5C" , opt_general_clip5c , -1.0 ,
     "Third coefficient in equation for clipping plane 5" },
-  { F,   "Clip5D" , opt_general_clip5d , 1.0 , 
+  { F,   "Clip5D" , opt_general_clip5d , 1.0 ,
     "Fourth coefficient in equation for clipping plane 5" },
-  { F,   "ClipFactor" , opt_general_clip_factor , 5.0 , 
+  { F,   "ClipFactor" , opt_general_clip_factor , 5.0 ,
     "Near and far clipping plane distance factor (decrease value for better "
     "z-buffer resolution)" },
-  { F|O, "ClipOnlyDrawIntersectingVolume" , 
-    opt_general_clip_only_draw_intersecting_volume , 0. , 
+  { F|O, "ClipOnlyDrawIntersectingVolume" ,
+    opt_general_clip_only_draw_intersecting_volume , 0. ,
     "Only draw layer of elements that intersect the clipping plane" },
-  { F|O, "ClipOnlyVolume" , opt_general_clip_only_volume , 0. , 
+  { F|O, "ClipOnlyVolume" , opt_general_clip_only_volume , 0. ,
     "Only clip volume elements" },
-  { F|S, "ClipPositionX" , opt_general_clip_position0 , 650. , 
+  { F|S, "ClipPositionX" , opt_general_clip_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the clipping "
-    "planes window" }, 
-  { F|S, "ClipPositionY" , opt_general_clip_position1 , 150. , 
+    "planes window" },
+  { F|S, "ClipPositionY" , opt_general_clip_position1 , 150. ,
     "Vertical position (in pixels) of the upper left corner of the clipping "
-    "planes window" }, 
-  { F|O, "ClipWholeElements" , opt_general_clip_whole_elements , 0. , 
+    "planes window" },
+  { F|O, "ClipWholeElements" , opt_general_clip_whole_elements , 0. ,
     "Clip whole elements" },
   { F|O, "ColorScheme", opt_general_color_scheme , 1. ,
     "Default color scheme (0=dark, 1=light or 2=grayscale)" },
-  { F|O, "ConfirmOverwrite" , opt_general_confirm_overwrite, 1. , 
-    "Ask confirmation before overwriting files?" }, 
-  { F|S, "ContextPositionX" , opt_general_context_position0 , 650. , 
+  { F|O, "ConfirmOverwrite" , opt_general_confirm_overwrite, 1. ,
+    "Ask confirmation before overwriting files?" },
+  { F|S, "ContextPositionX" , opt_general_context_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the contextual "
-    "windows" }, 
+    "windows" },
   { F|S, "ContextPositionY" , opt_general_context_position1 , 150. ,
     "Vertical position (in pixels) of the upper left corner of the contextual "
-    "windows" }, 
+    "windows" },
 
   { F|O, "DisplayBorderFactor" , opt_general_display_border_factor , 0.2 ,
     "Border factor for model display (0: model fits window size exactly)" },
@@ -352,39 +363,39 @@ StringXNumber GeneralOptions_Number[] = {
 
  { F|O, "FastRedraw" , opt_general_fast_redraw, 0. ,
     "Draw simplified model while rotating, panning and zooming" },
-  { F|S, "FieldPositionX" , opt_general_field_position0 , 650. , 
-    "Horizontal position (in pixels) of the upper left corner of the field window" }, 
-  { F|S, "FieldPositionY" , opt_general_field_position1 , 550. , 
-    "Vertical position (in pixels) of the upper left corner of the field window" }, 
-  { F|S, "FieldHeight" , opt_general_field_size1 , 300. , 
-    "Height (in pixels) of the field window" }, 
-  { F|S, "FieldWidth" , opt_general_field_size0 , 300. , 
-    "Width (in pixels) of the field window" }, 
-  { F|S, "FileChooserPositionX" , opt_general_file_chooser_position0 , 200. , 
+  { F|S, "FieldPositionX" , opt_general_field_position0 , 650. ,
+    "Horizontal position (in pixels) of the upper left corner of the field window" },
+  { F|S, "FieldPositionY" , opt_general_field_position1 , 550. ,
+    "Vertical position (in pixels) of the upper left corner of the field window" },
+  { F|S, "FieldHeight" , opt_general_field_size1 , 300. ,
+    "Height (in pixels) of the field window" },
+  { F|S, "FieldWidth" , opt_general_field_size0 , 300. ,
+    "Width (in pixels) of the field window" },
+  { F|S, "FileChooserPositionX" , opt_general_file_chooser_position0 , 200. ,
     "Horizontal position (in pixels) of the upper left corner of the file chooser "
-    "windows" }, 
+    "windows" },
   { F|S, "FileChooserPositionY" , opt_general_file_chooser_position1 , 200. ,
     "Vertical position (in pixels) of the upper left corner of the file chooser "
-    "windows" }, 
-  { F|O, "FontSize" , opt_general_fontsize , -1. , 
+    "windows" },
+  { F|O, "FontSize" , opt_general_fontsize , -1. ,
     "Size of the font in the user interface (-1=automatic)" },
 
   { F|O, "GraphicsFontSize" , opt_general_graphics_fontsize , 17. ,
-    "Size of the font in the graphic window" }, 
+    "Size of the font in the graphic window" },
   { F|O, "GraphicsFontSizeTitle" , opt_general_graphics_fontsize_title , 19. ,
-    "Size of the font in the graphic window for titles" }, 
-  { F|S, "GraphicsHeight" , opt_general_graphics_size1 , 600. , 
-    "Height (in pixels) of the graphic window" }, 
-  { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 50. , 
+    "Size of the font in the graphic window for titles" },
+  { F|S, "GraphicsHeight" , opt_general_graphics_size1 , 600. ,
+    "Height (in pixels) of the graphic window" },
+  { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 50. ,
     "Horizontal position (in pixels) of the upper left corner of the graphic "
-    "window" }, 
+    "window" },
   { F|S, "GraphicsPositionY" , opt_general_graphics_position1 , 50. ,
     "Vertical position (in pixels) of the upper left corner of the graphic "
-    "window" }, 
-  { F|S, "GraphicsWidth" , opt_general_graphics_size0 , 600. , 
-    "Width (in pixels) of the graphic window" }, 
+    "window" },
+  { F|S, "GraphicsWidth" , opt_general_graphics_size0 , 600. ,
+    "Width (in pixels) of the graphic window" },
 
-  { F|O, "InitialModule", opt_general_initial_context, 0. , 
+  { F|O, "InitialModule", opt_general_initial_context, 0. ,
     "Module launched on startup (0=automatic, 1=geometry, 2=mesh, 3=solver, "
     "4=post-processing) " },
 
@@ -392,95 +403,95 @@ StringXNumber GeneralOptions_Number[] = {
     "Enable light source 0" },
   { F|O, "Light0X" , opt_general_light00 , 0.65 ,
     "X position of light source 0" },
-  { F|O, "Light0Y" , opt_general_light01 , 0.65 , 
+  { F|O, "Light0Y" , opt_general_light01 , 0.65 ,
     "Y position of light source 0" },
-  { F|O, "Light0Z" , opt_general_light02 , 1.0 , 
+  { F|O, "Light0Z" , opt_general_light02 , 1.0 ,
     "Z position of light source 0" },
-  { F|O, "Light0W" , opt_general_light03 , 0.0 , 
+  { F|O, "Light0W" , opt_general_light03 , 0.0 ,
     "Divisor of the X, Y and Z coordinates of light source 0 (W=0 means "
     "infinitely far source)" },
   { F|O, "Light1" , opt_general_light1 , 0.,
     "Enable light source 1" },
-  { F|O, "Light1X" , opt_general_light10 , 0.5 , 
+  { F|O, "Light1X" , opt_general_light10 , 0.5 ,
     "X position of light source 1" },
-  { F|O, "Light1Y" , opt_general_light11 , 0.3 , 
+  { F|O, "Light1Y" , opt_general_light11 , 0.3 ,
     "Y position of light source 1" },
-  { F|O, "Light1Z" , opt_general_light12 , 1.0 , 
+  { F|O, "Light1Z" , opt_general_light12 , 1.0 ,
     "Z position of light source 1" },
-  { F|O, "Light1W" , opt_general_light13 , 0.0 , 
+  { F|O, "Light1W" , opt_general_light13 , 0.0 ,
     "Divisor of the X, Y and Z coordinates of light source 1 (W=0 means infinitely "
     "far source)" },
   { F|O, "Light2" , opt_general_light2 , 0.,
     "Enable light source 2" },
-  { F|O, "Light2X" , opt_general_light20 , 0.5 , 
+  { F|O, "Light2X" , opt_general_light20 , 0.5 ,
     "X position of light source 2" },
-  { F|O, "Light2Y" , opt_general_light21 , 0.3 , 
+  { F|O, "Light2Y" , opt_general_light21 , 0.3 ,
     "Y position of light source 2" },
-  { F|O, "Light2Z" , opt_general_light22 , 1.0 , 
+  { F|O, "Light2Z" , opt_general_light22 , 1.0 ,
     "Z position of light source 2" },
-  { F|O, "Light2W" , opt_general_light23 , 0.0 , 
+  { F|O, "Light2W" , opt_general_light23 , 0.0 ,
     "Divisor of the X, Y and Z coordinates of light source 2 (W=0 means infinitely "
     "far source)" },
   { F|O, "Light3" , opt_general_light3 , 0.,
     "Enable light source 3" },
-  { F|O, "Light3X" , opt_general_light30 , 0.5 , 
+  { F|O, "Light3X" , opt_general_light30 , 0.5 ,
     "X position of light source 3" },
-  { F|O, "Light3Y" , opt_general_light31 , 0.3 , 
+  { F|O, "Light3Y" , opt_general_light31 , 0.3 ,
     "Y position of light source 3" },
-  { F|O, "Light3Z" , opt_general_light32 , 1.0 , 
+  { F|O, "Light3Z" , opt_general_light32 , 1.0 ,
     "Z position of light source 3" },
-  { F|O, "Light3W" , opt_general_light33 , 0.0 , 
+  { F|O, "Light3W" , opt_general_light33 , 0.0 ,
     "Divisor of the X, Y and Z coordinates of light source 3 (W=0 means infinitely "
     "far source)" },
   { F|O, "Light4" , opt_general_light4 , 0.,
     "Enable light source 4" },
-  { F|O, "Light4X" , opt_general_light40 , 0.5 , 
+  { F|O, "Light4X" , opt_general_light40 , 0.5 ,
     "X position of light source 4" },
-  { F|O, "Light4Y" , opt_general_light41 , 0.3 , 
+  { F|O, "Light4Y" , opt_general_light41 , 0.3 ,
     "Y position of light source 4" },
-  { F|O, "Light4Z" , opt_general_light42 , 1.0 , 
+  { F|O, "Light4Z" , opt_general_light42 , 1.0 ,
     "Z position of light source 4" },
-  { F|O, "Light4W" , opt_general_light43 , 0.0 , 
+  { F|O, "Light4W" , opt_general_light43 , 0.0 ,
     "Divisor of the X, Y and Z coordinates of light source 4 (W=0 means infinitely "
     "far source)" },
   { F|O, "Light5" , opt_general_light5 , 0.,
     "Enable light source 5" },
-  { F|O, "Light5X" , opt_general_light50 , 0.5 , 
+  { F|O, "Light5X" , opt_general_light50 , 0.5 ,
     "X position of light source 5" },
-  { F|O, "Light5Y" , opt_general_light51 , 0.3 , 
+  { F|O, "Light5Y" , opt_general_light51 , 0.3 ,
     "Y position of light source 5" },
-  { F|O, "Light5Z" , opt_general_light52 , 1.0 , 
+  { F|O, "Light5Z" , opt_general_light52 , 1.0 ,
     "Z position of light source 5" },
-  { F|O, "Light5W" , opt_general_light53 , 0.0 , 
+  { F|O, "Light5W" , opt_general_light53 , 0.0 ,
     "Divisor of the X, Y and Z coordinates of light source 5 (W=0 means infinitely "
     "far source)" },
-  { F|O, "LineWidth" , opt_general_line_width , 1.0 , 
+  { F|O, "LineWidth" , opt_general_line_width , 1.0 ,
     "Display width of lines (in pixels)" },
 
-  { F|S, "ManipulatorPositionX" , opt_general_manip_position0 , 650. , 
+  { F|S, "ManipulatorPositionX" , opt_general_manip_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the manipulator "
-    "window" }, 
-  { F|S, "ManipulatorPositionY" , opt_general_manip_position1 , 150. , 
+    "window" },
+  { F|S, "ManipulatorPositionY" , opt_general_manip_position1 , 150. ,
     "Vertical position (in pixels) of the upper left corner of the manipulator "
-    "window" }, 
-  { F,   "MaxX" , opt_general_xmax , 0. , 
-    "Maximum model coordinate along the X-axis (read-only)" }, 
-  { F,   "MaxY" , opt_general_ymax , 0. , 
-    "Maximum model coordinate along the Y-axis (read-only)" }, 
-  { F,   "MaxZ" , opt_general_zmax , 0. , 
-    "Maximum model coordinate along the Z-axis (read-only)" }, 
-  { F|S, "MenuPositionX" , opt_general_menu_position0 , 800. , 
-    "Horizontal position (in pixels) of the upper left corner of the menu window" }, 
+    "window" },
+  { F,   "MaxX" , opt_general_xmax , 0. ,
+    "Maximum model coordinate along the X-axis (read-only)" },
+  { F,   "MaxY" , opt_general_ymax , 0. ,
+    "Maximum model coordinate along the Y-axis (read-only)" },
+  { F,   "MaxZ" , opt_general_zmax , 0. ,
+    "Maximum model coordinate along the Z-axis (read-only)" },
+  { F|S, "MenuPositionX" , opt_general_menu_position0 , 800. ,
+    "Horizontal position (in pixels) of the upper left corner of the menu window" },
   { F|S, "MenuPositionY" , opt_general_menu_position1 , 50. ,
-    "Vertical position (in pixels) of the upper left corner of the menu window" }, 
-  { F|S, "MessageHeight" , opt_general_message_size , 300. , 
-    "Height (in pixels) of the message console" }, 
-  { F,   "MinX" , opt_general_xmin , 0. , 
-    "Minimum model coordinate along the X-axis (read-only)" }, 
-  { F,   "MinY" , opt_general_ymin , 0. , 
-    "Minimum model coordinate along the Y-axis (read-only)" }, 
-  { F,   "MinZ" , opt_general_zmin , 0. , 
-    "Minimum model coordinate along the Z-axis (read-only)" }, 
+    "Vertical position (in pixels) of the upper left corner of the menu window" },
+  { F|S, "MessageHeight" , opt_general_message_size , 300. ,
+    "Height (in pixels) of the message console" },
+  { F,   "MinX" , opt_general_xmin , 0. ,
+    "Minimum model coordinate along the X-axis (read-only)" },
+  { F,   "MinY" , opt_general_ymin , 0. ,
+    "Minimum model coordinate along the Y-axis (read-only)" },
+  { F,   "MinZ" , opt_general_zmin , 0. ,
+    "Minimum model coordinate along the Z-axis (read-only)" },
   { F|O, "MouseHoverMeshes" , opt_general_mouse_hover_meshes , 0. ,
     "Enable mouse hover on meshes" },
   { F|O, "MouseSelection" , opt_general_mouse_selection , 1. ,
@@ -489,75 +500,75 @@ StringXNumber GeneralOptions_Number[] = {
   { F|S, "NonModalWindows" , opt_general_non_modal_windows , 1. ,
     "Force all control windows to be on top of the graphic window "
     "(\"non-modal\")" },
-  { F|O, "NoPopup" , opt_general_nopopup , 0. , 
+  { F|O, "NoPopup" , opt_general_nopopup , 0. ,
     "Disable interactive dialog windows in scripts (and use default values "
     "instead)" },
 
-  { F|S, "OptionsPositionX" , opt_general_option_position0 , 650. , 
+  { F|S, "OptionsPositionX" , opt_general_option_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the option "
-    "window" }, 
-  { F|S, "OptionsPositionY" , opt_general_option_position1 , 150. , 
-    "Vertical position (in pixels) of the upper left corner of the option window" }, 
+    "window" },
+  { F|S, "OptionsPositionY" , opt_general_option_position1 , 150. ,
+    "Vertical position (in pixels) of the upper left corner of the option window" },
   { F|O, "Orthographic" , opt_general_orthographic , 1. ,
     "Orthographic projection mode (0=perspective projection)" },
 
-  { F|S, "PluginPositionX" , opt_general_plugin_position0 , 650. , 
+  { F|S, "PluginPositionX" , opt_general_plugin_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the plugin "
-    "window" }, 
-  { F|S, "PluginPositionY" , opt_general_plugin_position1 , 550. , 
-    "Vertical position (in pixels) of the upper left corner of the plugin window" }, 
-  { F|S, "PluginHeight" , opt_general_plugin_size1 , 300. , 
-    "Height (in pixels) of the plugin window" }, 
-  { F|S, "PluginWidth" , opt_general_plugin_size0 , 300. , 
-    "Width (in pixels) of the plugin window" }, 
-  { F|O, "PointSize" , opt_general_point_size , 3. , 
+    "window" },
+  { F|S, "PluginPositionY" , opt_general_plugin_position1 , 550. ,
+    "Vertical position (in pixels) of the upper left corner of the plugin window" },
+  { F|S, "PluginHeight" , opt_general_plugin_size1 , 300. ,
+    "Height (in pixels) of the plugin window" },
+  { F|S, "PluginWidth" , opt_general_plugin_size0 , 300. ,
+    "Width (in pixels) of the plugin window" },
+  { F|O, "PointSize" , opt_general_point_size , 3. ,
     "Display size of points (in pixels)" },
-  { F|O, "PolygonOffsetAlwaysOn" , opt_general_polygon_offset_always , 0. , 
+  { F|O, "PolygonOffsetAlwaysOn" , opt_general_polygon_offset_always , 0. ,
     "Always apply polygon offset, instead of trying to detect when it is required" },
-  { F|O, "PolygonOffsetFactor" , opt_general_polygon_offset_factor , 
+  { F|O, "PolygonOffsetFactor" , opt_general_polygon_offset_factor ,
 #if defined(__APPLE__)
     0.5 ,
 #else
     1.0 ,
 #endif
     "Polygon offset factor (offset = factor * DZ + r * units)" },
-  { F|O, "PolygonOffsetUnits" , opt_general_polygon_offset_units , 1. , 
+  { F|O, "PolygonOffsetUnits" , opt_general_polygon_offset_units , 1. ,
     "Polygon offset units (offset = factor * DZ + r * units)" },
 
   { F|O, "QuadricSubdivisions" , opt_general_quadric_subdivisions, 6. ,
     "Number of subdivisions used to draw points or lines as spheres or cylinders" },
 
-  { F,   "RotationX" , opt_general_rotation0 , 0.0 , 
-    "First Euler angle (used if Trackball=0)" }, 
-  { F,   "RotationY" , opt_general_rotation1 , 0.0 , 
-    "Second Euler angle (used if Trackball=0)" }, 
-  { F,   "RotationZ" , opt_general_rotation2 , 0.0 , 
-    "Third Euler angle (used if Trackball=0)" }, 
+  { F,   "RotationX" , opt_general_rotation0 , 0.0 ,
+    "First Euler angle (used if Trackball=0)" },
+  { F,   "RotationY" , opt_general_rotation1 , 0.0 ,
+    "Second Euler angle (used if Trackball=0)" },
+  { F,   "RotationZ" , opt_general_rotation2 , 0.0 ,
+    "Third Euler angle (used if Trackball=0)" },
   { F|O, "RotationCenterGravity" , opt_general_rotation_center_cg , 1. ,
     "Rotate around the (pseudo) center of mass instead of (RotationCenterX, "
     "RotationCenterY, RotationCenterZ)" },
-  { F,   "RotationCenterX" , opt_general_rotation_center0 , 0.0 , 
-    "X coordinate of the center of rotation" }, 
-  { F,   "RotationCenterY" , opt_general_rotation_center1 , 0.0 , 
-    "Y coordinate of the center of rotation" }, 
-  { F,   "RotationCenterZ" , opt_general_rotation_center2 , 0.0 , 
-    "Z coordinate of the center of rotation" }, 
-
-  { F|S, "SaveOptions" , opt_general_options_save, 0. , 
+  { F,   "RotationCenterX" , opt_general_rotation_center0 , 0.0 ,
+    "X coordinate of the center of rotation" },
+  { F,   "RotationCenterY" , opt_general_rotation_center1 , 0.0 ,
+    "Y coordinate of the center of rotation" },
+  { F,   "RotationCenterZ" , opt_general_rotation_center2 , 0.0 ,
+    "Z coordinate of the center of rotation" },
+
+  { F|S, "SaveOptions" , opt_general_options_save, 0. ,
     "Automatically save current options in General.OptionsFileName (1) or per model (2)"
-    "each time you quit Gmsh?" }, 
-  { F|S, "SaveSession" , opt_general_session_save, 1. , 
+    "each time you quit Gmsh?" },
+  { F|S, "SaveSession" , opt_general_session_save, 1. ,
     "Automatically save session specific information in General.SessionFileName "
-    "each time you quit Gmsh?" }, 
-  { F,   "ScaleX" , opt_general_scale0 , 1.0 , 
+    "each time you quit Gmsh?" },
+  { F,   "ScaleX" , opt_general_scale0 , 1.0 ,
     "X-axis scale factor" },
-  { F,   "ScaleY" , opt_general_scale1 , 1.0 , 
+  { F,   "ScaleY" , opt_general_scale1 , 1.0 ,
     "Y-axis scale factor" },
-  { F,   "ScaleZ" , opt_general_scale2 , 1.0 , 
+  { F,   "ScaleZ" , opt_general_scale2 , 1.0 ,
     "Z-axis scale factor" },
-  { F|O, "Shininess" , opt_general_shine , 0.4 , 
+  { F|O, "Shininess" , opt_general_shine , 0.4 ,
     "Material shininess" },
-  { F|O, "ShininessExponent" , opt_general_shine_exponent , 40. , 
+  { F|O, "ShininessExponent" , opt_general_shine_exponent , 40. ,
     "Material shininess exponent (between 0 and 128)" },
   { F|O, "SmallAxes" , opt_general_small_axes , 1. ,
     "Display the small axes" },
@@ -569,21 +580,21 @@ StringXNumber GeneralOptions_Number[] = {
     " centered)" },
   { F|O, "SmallAxesSize" , opt_general_small_axes_size , 30. ,
     "Size (in pixels) of small axes" },
-  { F|S, "SolverPositionX" , opt_general_solver_position0 , 650. , 
+  { F|S, "SolverPositionX" , opt_general_solver_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the solver "
-    "windows" }, 
+    "windows" },
   { F|S, "SolverPositionY" , opt_general_solver_position1 , 150. ,
-    "Vertical position (in pixels) of the upper left corner of the solver windows" }, 
-  { F|S, "StatisticsPositionX" , opt_general_statistics_position0 , 650. , 
+    "Vertical position (in pixels) of the upper left corner of the solver windows" },
+  { F|S, "StatisticsPositionX" , opt_general_statistics_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the statistic "
-    "window" }, 
-  { F|S, "StatisticsPositionY" , opt_general_statistics_position1 , 150. , 
+    "window" },
+  { F|S, "StatisticsPositionY" , opt_general_statistics_position1 , 150. ,
     "Vertical position (in pixels) of the upper left corner of the statistic"
-    " window" }, 
+    " window" },
   { F|O, "Stereo" , opt_general_stereo_mode , 0. ,
     "Use stereo rendering" },
-  { F|S, "SystemMenuBar" , opt_general_system_menu_bar , 1. , 
-    "Use the system menu bar on Mac OS X?" }, 
+  { F|S, "SystemMenuBar" , opt_general_system_menu_bar , 1. ,
+    "Use the system menu bar on Mac OS X?" },
 
   { F|O, "Terminal" , opt_general_terminal , 0. ,
     "Should information be printed on the terminal (if available)?" },
@@ -593,31 +604,31 @@ StringXNumber GeneralOptions_Number[] = {
     "Use trackball rotation mode" },
   { F|O, "TrackballHyperbolicSheet" , opt_general_trackball_hyperbolic_sheet , 1. ,
     "Use hyperbolic sheet away from trackball center for z-rotations" },
-  { F,   "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 , 
-    "First trackball quaternion component (used if General.Trackball=1)" }, 
-  { F,   "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 , 
-    "Second trackball quaternion component (used if General.Trackball=1)" }, 
-  { F,   "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 , 
-    "Third trackball quaternion component (used if General.Trackball=1)" }, 
-  { F,   "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 , 
-    "Fourth trackball quaternion component (used if General.Trackball=1)" }, 
-  { F,   "TranslationX" , opt_general_translation0 , 0.0 , 
+  { F,   "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 ,
+    "First trackball quaternion component (used if General.Trackball=1)" },
+  { F,   "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 ,
+    "Second trackball quaternion component (used if General.Trackball=1)" },
+  { F,   "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 ,
+    "Third trackball quaternion component (used if General.Trackball=1)" },
+  { F,   "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 ,
+    "Fourth trackball quaternion component (used if General.Trackball=1)" },
+  { F,   "TranslationX" , opt_general_translation0 , 0.0 ,
     "X-axis translation (in model units)" },
-  { F,   "TranslationY" , opt_general_translation1 , 0.0 , 
+  { F,   "TranslationY" , opt_general_translation1 , 0.0 ,
     "Y-axis translation (in model units)" },
-  { F,   "TranslationZ" , opt_general_translation2 , 0.0 , 
+  { F,   "TranslationZ" , opt_general_translation2 , 0.0 ,
     "Z-axis translation (in model units)" },
 
   { F|O, "VectorType" , opt_general_vector_type , 4 ,
     "Default vector display type (for normals, etc.)" },
   { F|O, "Verbosity" , opt_general_verbosity , 4. ,
     "Level of information printed during processing (0=no information)" },
-  { F|S, "VisibilityPositionX" , opt_general_visibility_position0 , 650. , 
+  { F|S, "VisibilityPositionX" , opt_general_visibility_position0 , 650. ,
     "Horizontal position (in pixels) of the upper left corner of the visibility "
-    "window" }, 
-  { F|S, "VisibilityPositionY" , opt_general_visibility_position1 , 150. , 
+    "window" },
+  { F|S, "VisibilityPositionY" , opt_general_visibility_position1 , 150. ,
     "Vertical position (in pixels) of the upper left corner of the visibility "
-    "window" }, 
+    "window" },
 
   { F|O, "ZoomFactor" , opt_general_zoom_factor , 4.0 ,
     "Middle mouse button zoom acceleration factor" },
@@ -626,8 +637,8 @@ StringXNumber GeneralOptions_Number[] = {
 } ;
 
 StringXNumber GeometryOptions_Number[] = {
-  { F|O, "AutoCoherence" , opt_geometry_auto_coherence , 1. , 
-    "Should all duplicate entities be automatically removed?" }, 
+  { F|O, "AutoCoherence" , opt_geometry_auto_coherence , 1. ,
+    "Should all duplicate entities be automatically removed?" },
 
   { F,   "Clip" , opt_geometry_clip , 0.,
     "Enable clipping planes? (Plane[i]=2^i, i=0,...,5)" },
@@ -642,67 +653,67 @@ StringXNumber GeometryOptions_Number[] = {
   { F|O, "ExtrudeSplinePoints" , opt_geometry_extrude_spline_points, 5. ,
     "Number of control points for splines created during extrusion" },
 
-  { F|O, "HighlightOrphans" , opt_geometry_highlight_orphans, 0. , 
-    "Highlight orphan entities (lines connected to a single surface, etc.)?" }, 
+  { F|O, "HighlightOrphans" , opt_geometry_highlight_orphans, 0. ,
+    "Highlight orphan entities (lines connected to a single surface, etc.)?" },
 
-  { F|O, "Light" , opt_geometry_light , 1. , 
+  { F|O, "Light" , opt_geometry_light , 1. ,
     "Enable lighting for the geometry" },
-  { F|O, "LightTwoSide" , opt_geometry_light_two_side , 1. , 
+  { F|O, "LightTwoSide" , opt_geometry_light_two_side , 1. ,
     "Light both sides of surfaces (leads to slower rendering)" },
-  { F|O, "Lines" , opt_geometry_lines , 1. , 
+  { F|O, "Lines" , opt_geometry_lines , 1. ,
     "Display geometry curves?" },
-  { F|O, "LineNumbers" , opt_geometry_lines_num , 0. , 
+  { F|O, "LineNumbers" , opt_geometry_lines_num , 0. ,
     "Display curve numbers?" },
-  { F|O, "LineSelectWidth" , opt_geometry_line_sel_width , 2. , 
+  { F|O, "LineSelectWidth" , opt_geometry_line_sel_width , 2. ,
     "Display width of selected lines (in pixels)" },
-  { F|O, "LineType" , opt_geometry_line_type , 0. , 
+  { F|O, "LineType" , opt_geometry_line_type , 0. ,
     "Display lines as solid color segments (0), 3D cylinders (1) or tapered "
     "cylinders (2)" },
-  { F|O, "LineWidth" , opt_geometry_line_width , 2. , 
+  { F|O, "LineWidth" , opt_geometry_line_width , 2. ,
     "Display width of lines (in pixels)" },
 
   { F|O, "MatchGeomAndMesh" , opt_geometry_match_geom_and_mesh, 0 ,
     "Matches geometries and meshes." },
 
-  { F|O, "Normals" , opt_geometry_normals , 0. , 
-    "Display size of normal vectors (in pixels)" }, 
+  { F|O, "Normals" , opt_geometry_normals , 0. ,
+    "Display size of normal vectors (in pixels)" },
   { F|O, "NumSubEdges" , opt_geometry_num_sub_edges , 20. ,
-    "Number of edge subdivisions between control points when displaying curves" }, 
+    "Number of edge subdivisions between control points when displaying curves" },
 
-  { F|O, "OCCFixDegenerated" , opt_geometry_occ_fix_degenerated , 0. , 
+  { F|O, "OCCFixDegenerated" , opt_geometry_occ_fix_degenerated , 0. ,
     "Fix degenerated edges/faces in STEP, IGES and BRep models" },
-  { F|O, "OCCFixSmallEdges" , opt_geometry_occ_fix_small_edges , 0. , 
+  { F|O, "OCCFixSmallEdges" , opt_geometry_occ_fix_small_edges , 0. ,
     "Fix small edges in STEP, IGES and BRep models" },
-  { F|O, "OCCFixSmallFaces" , opt_geometry_occ_fix_small_faces , 0. , 
+  { F|O, "OCCFixSmallFaces" , opt_geometry_occ_fix_small_faces , 0. ,
     "Fix small faces in STEP, IGES and BRep models" },
-  { F|O, "OCCSewFaces" , opt_geometry_occ_sew_faces , 0. , 
+  { F|O, "OCCSewFaces" , opt_geometry_occ_sew_faces , 0. ,
     "Sew faces in STEP, IGES and BRep models" },
-  { F|O, "OCCConnectFaces" , opt_geometry_occ_connect_faces , 0. , 
+  { F|O, "OCCConnectFaces" , opt_geometry_occ_connect_faces , 0. ,
     "Cut and connect faces in STEP, IGES and BRep models" },
-  { F,   "OffsetX" , opt_geometry_offset0 , 0. , 
+  { F,   "OffsetX" , opt_geometry_offset0 , 0. ,
     "Model display offset along X-axis (in model coordinates)" },
-  { F,   "OffsetY" , opt_geometry_offset1 , 0. , 
+  { F,   "OffsetY" , opt_geometry_offset1 , 0. ,
     "Model display offset along Y-axis (in model coordinates)" },
-  { F,   "OffsetZ" , opt_geometry_offset2 , 0. , 
+  { F,   "OffsetZ" , opt_geometry_offset2 , 0. ,
     "Model display offset along Z-axis (in model coordinates)" },
-  { F|O, "OldCircle" , opt_geometry_old_circle , 0. , 
+  { F|O, "OldCircle" , opt_geometry_old_circle , 0. ,
     "Use old circle description (compatibility option for old Gmsh geometries)" },
-  { F|O, "OldNewReg" , opt_geometry_old_newreg , 1. , 
+  { F|O, "OldNewReg" , opt_geometry_old_newreg , 1. ,
     "Use old newreg definition for geometrical transformations (compatibility "
     "option for old Gmsh geometries)" },
 
   { F|O, "Points" , opt_geometry_points , 1. ,
     "Display geometry points?" },
-  { F|O, "PointNumbers" , opt_geometry_points_num , 0. , 
+  { F|O, "PointNumbers" , opt_geometry_points_num , 0. ,
     "Display points numbers?" },
-  { F|O, "PointSelectSize" , opt_geometry_point_sel_size , 5. , 
+  { F|O, "PointSelectSize" , opt_geometry_point_sel_size , 5. ,
     "Display size of selected points (in pixels)" },
-  { F|O, "PointSize" , opt_geometry_point_size , 4. , 
+  { F|O, "PointSize" , opt_geometry_point_size , 4. ,
     "Display size of points (in pixels)" },
-  { F|O, "PointType" , opt_geometry_point_type , 0. , 
+  { F|O, "PointType" , opt_geometry_point_type , 0. ,
     "Display points as solid color dots (0) or 3D spheres (1)" },
 
-  { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 , 
+  { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 ,
     "Global geometry scaling factor" },
   { F|O, "SnapX" , opt_geometry_snap0 , 0.1 ,
     "Snapping grid spacing along the X-axis" },
@@ -710,11 +721,11 @@ StringXNumber GeometryOptions_Number[] = {
     "Snapping grid spacing along the Y-axis" },
   { F|O, "SnapZ" , opt_geometry_snap2 , 0.1 ,
     "Snapping grid spacing along the Z-axis" },
-  { F|O, "Surfaces" , opt_geometry_surfaces , 0. , 
+  { F|O, "Surfaces" , opt_geometry_surfaces , 0. ,
     "Display geometry surfaces?" },
-  { F|O, "SurfaceNumbers" , opt_geometry_surfaces_num , 0. , 
+  { F|O, "SurfaceNumbers" , opt_geometry_surfaces_num , 0. ,
     "Display surface numbers?" },
-  { F|O, "SurfaceType" , opt_geometry_surface_type , 2. , 
+  { F|O, "SurfaceType" , opt_geometry_surface_type , 2. ,
     "Surface display type (0=cross, 1=wireframe, 2=solid)" },
 
   { F|O, "Tangents" , opt_geometry_tangents , 0. ,
@@ -742,9 +753,9 @@ StringXNumber GeometryOptions_Number[] = {
   { F,   "TransformZZ" , opt_geometry_transform22 , 1. ,
     "Element (3,3) of the 3x3 model display transformation matrix" },
 
-  { F|O, "Volumes" , opt_geometry_volumes , 0. , 
+  { F|O, "Volumes" , opt_geometry_volumes , 0. ,
     "Display geometry volumes? (not implemented yet)" },
-  { F|O, "VolumeNumbers" , opt_geometry_volumes_num , 0. , 
+  { F|O, "VolumeNumbers" , opt_geometry_volumes_num , 0. ,
     "Display volume numbers? (not implemented yet)" },
 
   { 0, 0 , 0 , 0. , 0 }
@@ -752,25 +763,25 @@ StringXNumber GeometryOptions_Number[] = {
 
 StringXNumber MeshOptions_Number[] = {
   { F|O, "Algorithm" , opt_mesh_algo2d , ALGO_2D_AUTO ,
-    "2D mesh algorithm (1=MeshAdapt, 2=Automatic, 5=Delaunay, 6=Frontal, 7=bamg, 8=delquad)" }, 
-  { F|O, "Algorithm3D" , opt_mesh_algo3d , 
+    "2D mesh algorithm (1=MeshAdapt, 2=Automatic, 5=Delaunay, 6=Frontal, 7=bamg, 8=delquad)" },
+  { F|O, "Algorithm3D" , opt_mesh_algo3d ,
 #if defined(HAVE_TETGEN)
     ALGO_3D_DELAUNAY ,
 #else
     ALGO_3D_FRONTAL ,
 #endif
-    "3D mesh algorithm (1=Delaunay, 4=Frontal, 5=Frontal Delaunay, 6=Frontal Hex, 7=MMG3D)" }, 
+    "3D mesh algorithm (1=Delaunay, 4=Frontal, 5=Frontal Delaunay, 6=Frontal Hex, 7=MMG3D)" },
   { F|O, "AngleSmoothNormals" , opt_mesh_angle_smooth_normals , 30.0 ,
-    "Threshold angle below which normals are not smoothed" }, 
+    "Threshold angle below which normals are not smoothed" },
   { F|O, "AnisoMax" , opt_mesh_aniso_max, 1.e33,
     "Maximum anisotropy of the mesh" },
   { F|O, "AllowSwapAngle" , opt_mesh_allow_swap_edge_angle , 10.0 ,
     "Threshold angle (in degrees) between faces normals under which we allow "
-    "an edge swap" }, 
+    "an edge swap" },
 
-  { F|O, "BdfFieldFormat" , opt_mesh_bdf_field_format , 1. , 
+  { F|O, "BdfFieldFormat" , opt_mesh_bdf_field_format , 1. ,
     "Field format for Nastran BDF files (0=free, 1=small, 2=large)" },
-  { F|O, "Binary" , opt_mesh_binary , 0. , 
+  { F|O, "Binary" , opt_mesh_binary , 0. ,
     "Write mesh files in binary format (if possible)" },
 
   { F|O, "ChacoArchitecture" , opt_mesh_partition_chaco_architecture, 1. ,
@@ -802,18 +813,18 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "ChacoVMax" , opt_mesh_partition_chaco_vmax, 250. ,
     "(Adv. Chaco): Maximum vertices in a coarse graph (for multilevel-KL "
     "algorithm and Multilevel RQI/Symmlq eigensolver)" },
-  { F|O, "ChacoParamINTERNAL_VERTICES" , 
+  { F|O, "ChacoParamINTERNAL_VERTICES" ,
     opt_mesh_partition_chaco_internal_vertices, 0. ,
     "(Adv. Chaco): Parameter INTERNAL_VERTICES" },
   { F|O, "ChacoParamREFINE_MAP" , opt_mesh_partition_chaco_refine_map, 1. ,
     "(Adv. Chaco): Parameter REFINE_MAP" },
-  { F|O, "ChacoParamREFINE_PARTITION" , 
+  { F|O, "ChacoParamREFINE_PARTITION" ,
     opt_mesh_partition_chaco_refine_partition, 0. ,
     "(Adv. Chaco): Parameter REFINE_PARTITION" },
-  { F|O, "ChacoParamTERMINAL_PROPOGATION" , 
+  { F|O, "ChacoParamTERMINAL_PROPOGATION" ,
     opt_mesh_partition_chaco_terminal_propogation, 0. ,
     "(Adv. Chaco): Parameter TERMINAL_PROPOGATION" },
-  { F|O, "CharacteristicLengthExtendFromBoundary" , 
+  { F|O, "CharacteristicLengthExtendFromBoundary" ,
     opt_mesh_lc_extend_from_boundary, 1. ,
     "Extend computation of mesh element sizes from the boundaries into the surfaces/volumes" },
   { F|O, "CharacteristicLengthFactor" , opt_mesh_lc_factor , 1.0 ,
@@ -831,7 +842,7 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "ColorCarousel" , opt_mesh_color_carousel , 1. ,
     "Mesh coloring (0=by element type, 1=by elementary entity, 2=by physical "
     "entity, 3=by partition)" },
-  { F,   "CpuTime" , opt_mesh_cpu_time , 0. , 
+  { F,   "CpuTime" , opt_mesh_cpu_time , 0. ,
     "CPU time (in seconds) for the generation of the current mesh (read-only)" },
 
   { F|O, "DrawSkinOnly" , opt_mesh_draw_skin_only , 0. ,
@@ -845,34 +856,34 @@ StringXNumber MeshOptions_Number[] = {
   { F|O, "Explode" , opt_mesh_explode , 1.0 ,
     "Element shrinking factor (between 0 and 1)" },
 
-  { F|O, "Format" , opt_mesh_file_format , FORMAT_AUTO , 
+  { F|O, "Format" , opt_mesh_file_format , FORMAT_AUTO ,
     "Mesh output format (1=msh, 2=unv, 10=automatic, 19=vrml, 27=stl, 30=mesh, 31=bdf, "
     "32=cgns, 33=med, 40=ply2)" },
 
-  { F|O, "Hexahedra" , opt_mesh_hexahedra , 1. , 
+  { F|O, "Hexahedra" , opt_mesh_hexahedra , 1. ,
     "Display mesh hexahedra?" },
-  { F|O, "HighOrderNoMetric" , opt_mesh_hom_no_metric , 0. , 
+  { F|O, "HighOrderNoMetric" , opt_mesh_hom_no_metric , 0. ,
     "Don't use metric computation to create high-order meshes." },
 
 
-  { F|O, "LabelSampling" , opt_mesh_label_sampling , 1. , 
+  { F|O, "LabelSampling" , opt_mesh_label_sampling , 1. ,
     "Label sampling rate (display one label every `LabelSampling' elements)" },
-  { F|O, "LabelType" , opt_mesh_label_type , 0. , 
+  { F|O, "LabelType" , opt_mesh_label_type , 0. ,
     "Type of element label (0=element number, 1=elementary entity number, "
     "2=physical entity number, 3=partition number, 4=coordinates)" },
   { F|O, "LcIntegrationPrecision" , opt_mesh_lc_integration_precision, 1.e-9 ,
     "Accuracy of evaluation of the LC field for 1D mesh generation" },
-  { F|O, "Light" , opt_mesh_light , 1. , 
+  { F|O, "Light" , opt_mesh_light , 1. ,
     "Enable lighting for the mesh" },
-  { F|O, "LightLines" , opt_mesh_light_lines , 1. , 
+  { F|O, "LightLines" , opt_mesh_light_lines , 1. ,
     "Enable lighting for mesh lines (element edges)" },
-  { F|O, "LightTwoSide" , opt_mesh_light_two_side , 1. , 
+  { F|O, "LightTwoSide" , opt_mesh_light_two_side , 1. ,
     "Light both sides of surfaces (leads to slower rendering)" },
-  { F|O, "Lines" , opt_mesh_lines , 0. , 
+  { F|O, "Lines" , opt_mesh_lines , 0. ,
     "Display mesh lines (1D elements)?" },
-  { F|O, "LineNumbers" , opt_mesh_lines_num , 0. , 
+  { F|O, "LineNumbers" , opt_mesh_lines_num , 0. ,
     "Display mesh line numbers?" },
-  { F|O, "LineWidth" , opt_mesh_line_width , 1.0 , 
+  { F|O, "LineWidth" , opt_mesh_line_width , 1.0 ,
     "Display width of mesh lines (in pixels)" },
 
   { F|O, "MeshOnlyVisible" , opt_mesh_mesh_only_visible, 0. ,
@@ -889,81 +900,81 @@ StringXNumber MeshOptions_Number[] = {
     "Minimum number of points used to mesh a circle" },
   { F|O, "MinimumCurvePoints" , opt_mesh_min_curv_points, 3. ,
     "Minimum number of points used to mesh a (non-straight) curve" },
-  { F|O, "MshFileVersion" , opt_mesh_msh_file_version , 2.2 , 
+  { F|O, "MshFileVersion" , opt_mesh_msh_file_version , 2.2 ,
     "Version of the MSH file format to use" },
-  { F|O, "MshFilePartitioned" , opt_mesh_msh_file_partitioned , 0. , 
+  { F|O, "MshFilePartitioned" , opt_mesh_msh_file_partitioned , 0. ,
     "Split MSH file by mesh partition" },
-  { F|O, "MultiplePassesMeshes" , opt_mesh_multiple_passes , 0. , 
+  { F|O, "MultiplePassesMeshes" , opt_mesh_multiple_passes , 0. ,
     "Do a first simple mesh and use it for complex background meshes (curvatures...)" },
-  
-  { F|O, "PartitionHexWeight"     , opt_mesh_partition_hex_weight , 1 , 
+
+  { F|O, "PartitionHexWeight"     , opt_mesh_partition_hex_weight , 1 ,
     "Weight of hexahedral element for METIS load balancing" },
-  { F|O, "PartitionPrismWeight"   , opt_mesh_partition_pri_weight , 1 , 
+  { F|O, "PartitionPrismWeight"   , opt_mesh_partition_pri_weight , 1 ,
     "Weight of prismatic element (wedge) for METIS load balancing" },
-  { F|O, "PartitionPyramidWeight" , opt_mesh_partition_pyr_weight , 1 , 
+  { F|O, "PartitionPyramidWeight" , opt_mesh_partition_pyr_weight , 1 ,
     "Weight of pyramidal element for METIS load balancing" },
-  { F|O, "PartitionQuadWeight"    , opt_mesh_partition_qua_weight , 1 , 
+  { F|O, "PartitionQuadWeight"    , opt_mesh_partition_qua_weight , 1 ,
     "Weight of quadrangle for METIS load balancing" },
-  { F|O, "PartitionTetWeight"     , opt_mesh_partition_tet_weight , 1 , 
+  { F|O, "PartitionTetWeight"     , opt_mesh_partition_tet_weight , 1 ,
     "Weight of tetrahedral element for METIS load balancing" },
-  { F|O, "PartitionTriWeight"     , opt_mesh_partition_tri_weight , 1 , 
+  { F|O, "PartitionTriWeight"     , opt_mesh_partition_tri_weight , 1 ,
     "Weight of triangle for METIS load balancing" ,},
 
-  { F, "NbHexahedra" , opt_mesh_nb_hexahedra , 0. , 
+  { F, "NbHexahedra" , opt_mesh_nb_hexahedra , 0. ,
     "Number of hexahedra in the current mesh (read-only)" },
-  { F, "NbNodes" , opt_mesh_nb_nodes , 0. , 
+  { F, "NbNodes" , opt_mesh_nb_nodes , 0. ,
     "Number of nodes in the current mesh (read-only)" },
   { F|O, "NbPartitions" , opt_mesh_partition_num, 1. ,
     "Number of partitions" },
-  { F, "NbPrisms" , opt_mesh_nb_prisms , 0. , 
+  { F, "NbPrisms" , opt_mesh_nb_prisms , 0. ,
     "Number of prisms in the current mesh (read-only)" },
-  { F, "NbPyramids" , opt_mesh_nb_pyramids , 0. , 
+  { F, "NbPyramids" , opt_mesh_nb_pyramids , 0. ,
     "Number of pyramids in the current mesh (read-only)" },
-  { F, "NbQuadrangles" , opt_mesh_nb_quadrangles , 0. , 
+  { F, "NbQuadrangles" , opt_mesh_nb_quadrangles , 0. ,
     "Number of quadrangles in the current mesh (read-only)" },
-  { F, "NbTetrahedra" , opt_mesh_nb_tetrahedra , 0. , 
+  { F, "NbTetrahedra" , opt_mesh_nb_tetrahedra , 0. ,
     "Number of tetrahedra in the current mesh (read-only)" },
-  { F, "NbTriangles" , opt_mesh_nb_triangles , 0. , 
+  { F, "NbTriangles" , opt_mesh_nb_triangles , 0. ,
     "Number of triangles in the current mesh (read-only)" },
   { F|O, "Normals" , opt_mesh_normals , 0.0 ,
-    "Display size of normal vectors (in pixels)" }, 
+    "Display size of normal vectors (in pixels)" },
   { F|O, "NumSubEdges" , opt_mesh_num_sub_edges , 2. ,
-    "Number of edge subdivisions when displaying high order elements" }, 
+    "Number of edge subdivisions when displaying high order elements" },
 
-  { F|O, "Optimize" , opt_mesh_optimize , 0. , 
+  { F|O, "Optimize" , opt_mesh_optimize , 0. ,
     "Optimize the mesh to improve the quality of tetrahedral elements" },
-  { F|O, "OptimizeNetgen" , opt_mesh_optimize_netgen , 0. , 
+  { F|O, "OptimizeNetgen" , opt_mesh_optimize_netgen , 0. ,
     "Optimize the mesh using Netgen to improve the quality of tetrahedral "
     "elements" },
 
   { F|O, "Partitioner" , opt_mesh_partition_partitioner, 2. ,
     "Partitioner software (1=Chacho, 2=METIS)" },
-  { F|O, "Points" , opt_mesh_points , 0. , 
+  { F|O, "Points" , opt_mesh_points , 0. ,
     "Display mesh vertices (nodes)?" },
-  { F|O, "PointNumbers" , opt_mesh_points_num , 0. , 
+  { F|O, "PointNumbers" , opt_mesh_points_num , 0. ,
     "Display mesh node numbers?" },
-  { F|O, "PointSize" , opt_mesh_point_size , 4. , 
+  { F|O, "PointSize" , opt_mesh_point_size , 4. ,
     "Display size of mesh vertices (in pixels)" },
-  { F|O, "PointType" , opt_mesh_point_type , 0. , 
+  { F|O, "PointType" , opt_mesh_point_type , 0. ,
     "Display mesh vertices as solid color dots (0) or 3D spheres (1)" },
-  { F|O, "Prisms" , opt_mesh_prisms , 1. , 
+  { F|O, "Prisms" , opt_mesh_prisms , 1. ,
     "Display mesh prisms?" },
-  { F|O, "Pyramids" , opt_mesh_pyramids , 1. , 
+  { F|O, "Pyramids" , opt_mesh_pyramids , 1. ,
     "Display mesh pyramids?" },
 
-  { F|O, "Quadrangles" , opt_mesh_quadrangles , 1. , 
+  { F|O, "Quadrangles" , opt_mesh_quadrangles , 1. ,
     "Display mesh quadrangles?" },
-  { F|O, "QualityInf" , opt_mesh_quality_inf , 0.0 , 
+  { F|O, "QualityInf" , opt_mesh_quality_inf , 0.0 ,
     "Only display elements whose quality measure is greater than QualityInf" },
-  { F|O, "QualitySup" , opt_mesh_quality_sup , 0.0 , 
+  { F|O, "QualitySup" , opt_mesh_quality_sup , 0.0 ,
     "Only display elements whose quality measure is smaller than QualitySup" },
-  { F|O, "QualityType" , opt_mesh_quality_type , 2. , 
+  { F|O, "QualityType" , opt_mesh_quality_type , 2. ,
     "Type of quality measure (0=gamma~vol/sum_face/max_edge, "
     "1=eta~vol^(2/3)/sum_edge^2, 2=rho~min_edge/max_edge)" },
 
-  { F|O, "RadiusInf" , opt_mesh_radius_inf , 0.0 , 
+  { F|O, "RadiusInf" , opt_mesh_radius_inf , 0.0 ,
     "Only display elements whose longest edge is greater than RadiusInf" },
-  { F|O, "RadiusSup" , opt_mesh_radius_sup , 0.0 , 
+  { F|O, "RadiusSup" , opt_mesh_radius_sup , 0.0 ,
     "Only display elements whose longest edge is smaller than RadiusSup" },
   { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-9 ,
     "Random factor used in the 2D meshing algorithm (should be increased if "
@@ -973,30 +984,30 @@ StringXNumber MeshOptions_Number[] = {
 #else
   { F|O, "RecombinationAlgorithm" , opt_mesh_algo_recombine , 0 ,
 #endif
-    "Mesh recombination algorithm (0=standard, 1=blossom)" }, 
+    "Mesh recombination algorithm (0=standard, 1=blossom)" },
   { F|O, "RecombineAll" , opt_mesh_recombine_all , 0 ,
-    "Apply recombination algorithm to all surfaces, ignoring per-surface spec" }, 
+    "Apply recombination algorithm to all surfaces, ignoring per-surface spec" },
 
   { F|O, "RemeshAlgorithm" , opt_mesh_remesh_algo , 0 ,
-    "Remeshing algorithm (0=no split, 1=automatic, 2=automatic only with metis)" }, 
+    "Remeshing algorithm (0=no split, 1=automatic, 2=automatic only with metis)" },
   { F|O, "RemeshParametrization" , opt_mesh_remesh_param , 0 ,
-    "Remsh Parametrization (0=harmonic, 1=conformal, 2=rbf harmonic)" }, 
+    "Remsh Parametrization (0=harmonic, 1=conformal, 2=rbf harmonic)" },
 
   { F|O, "RefineSteps" , opt_mesh_refine_steps , 10 ,
-    "Number of refinement steps in the MeshAdapt-based 2D algorithms" }, 
+    "Number of refinement steps in the MeshAdapt-based 2D algorithms" },
   { F|O, "Remove4Triangles" , opt_mesh_remove_4_triangles , 0 ,
-    "Try to remove nodes surrounded by 4 triangles in 2D triangular meshes" }, 
-  { F|O, "ReverseAllNormals" , opt_mesh_reverse_all_normals , 0. , 
+    "Try to remove nodes surrounded by 4 triangles in 2D triangular meshes" },
+  { F|O, "ReverseAllNormals" , opt_mesh_reverse_all_normals , 0. ,
     "Reverse all the mesh normals (for display)" },
 
-  { F,   "SaveAll" , opt_mesh_save_all , 0. , 
+  { F,   "SaveAll" , opt_mesh_save_all , 0. ,
     "Ignore Physical definitions and save all elements" },
-  { F|O, "SaveElementTagType" , opt_mesh_save_element_tag_type , 1. , 
+  { F|O, "SaveElementTagType" , opt_mesh_save_element_tag_type , 1. ,
     "Type of the element tag saved in mesh formats that don't support saving "
     "physical or partition ids (1=elementary, 2=physical, 3=partition)" },
-  { F|O, "SaveParametric" , opt_mesh_save_parametric , 0. , 
+  { F|O, "SaveParametric" , opt_mesh_save_parametric , 0. ,
     "Save parametric coordinates of nodes" },
-  { F|O, "SaveGroupsOfNodes" , opt_mesh_save_groups_of_nodes , 0. , 
+  { F|O, "SaveGroupsOfNodes" , opt_mesh_save_groups_of_nodes , 0. ,
     "Save groups of nodes for each physical line and surface (UNV mesh "
     "format only)" },
   { F|O, "ScalingFactor" , opt_mesh_scaling_factor , 1.0 ,
@@ -1011,41 +1022,41 @@ StringXNumber MeshOptions_Number[] = {
     "Number of smoothing steps applied to the final mesh" },
   { F|O, "SmoothInternalEdges" , opt_mesh_smooth_internal_edges , 0 ,
     "Number of smoothing steps of internal edges for high order meshes" },
-  { F|O, "SmoothNormals" , opt_mesh_smooth_normals , 0. , 
+  { F|O, "SmoothNormals" , opt_mesh_smooth_normals , 0. ,
     "Smooth the mesh normals?" },
   { F|O, "SmoothRatio" , opt_mesh_smooth_ratio , 1.8 ,
     "Ratio between mesh sizes at vertices of a same edeg (used in BAMG)" },
   { F|O, "SubdivisionAlgorithm" , opt_mesh_algo_subdivide , 0 ,
-    "Mesh subdivision algorithm (0=none, 1=all quadrangles, 2=all hexahedra)" }, 
-  { F|O, "SurfaceEdges" , opt_mesh_surfaces_edges , 1. , 
+    "Mesh subdivision algorithm (0=none, 1=all quadrangles, 2=all hexahedra)" },
+  { F|O, "SurfaceEdges" , opt_mesh_surfaces_edges , 1. ,
     "Display edges of surface mesh?" },
-  { F|O, "SurfaceFaces" , opt_mesh_surfaces_faces , 0. , 
+  { F|O, "SurfaceFaces" , opt_mesh_surfaces_faces , 0. ,
     "Display faces of surface mesh?" },
-  { F|O, "SurfaceNumbers" , opt_mesh_surfaces_num , 0. , 
+  { F|O, "SurfaceNumbers" , opt_mesh_surfaces_num , 0. ,
     "Display surface mesh element numbers?" },
   { F|O, "SwitchElementTags", opt_mesh_switch_elem_tags, 0. ,
     "Invert elementary and physical tags when reading the mesh"},
 
-  { F|O, "Tangents" , opt_mesh_tangents , 0.0 , 
-    "Display size of tangent vectors (in pixels)" }, 
-  { F|O, "Tetrahedra" , opt_mesh_tetrahedra , 1. , 
+  { F|O, "Tangents" , opt_mesh_tangents , 0.0 ,
+    "Display size of tangent vectors (in pixels)" },
+  { F|O, "Tetrahedra" , opt_mesh_tetrahedra , 1. ,
     "Display mesh tetrahedra?" },
   { F|O, "ToleranceEdgeLength" , opt_mesh_tolerance_edge_length, 0.0,
     "Skip a model edge in mesh generation if its length is less than user's "
     "defined tolerance" },
-  { F|O, "Triangles" , opt_mesh_triangles , 1. , 
+  { F|O, "Triangles" , opt_mesh_triangles , 1. ,
     "Display mesh triangles?" },
 
-  { F|O, "VolumeEdges" , opt_mesh_volumes_edges , 1. , 
+  { F|O, "VolumeEdges" , opt_mesh_volumes_edges , 1. ,
     "Display edges of volume mesh?" },
-  { F|O, "VolumeFaces" , opt_mesh_volumes_faces , 0. , 
+  { F|O, "VolumeFaces" , opt_mesh_volumes_faces , 0. ,
     "Display faces of volume mesh?" },
-  { F|O, "VolumeNumbers" , opt_mesh_volumes_num , 0. , 
+  { F|O, "VolumeNumbers" , opt_mesh_volumes_num , 0. ,
     "Display volume mesh element numbers?" },
   { F|O, "Voronoi" , opt_mesh_voronoi , 0. ,
     "Display the voronoi diagram" },
 
-  { F|O, "ZoneDefinition" , opt_mesh_zone_definition , 0. , 
+  { F|O, "ZoneDefinition" , opt_mesh_zone_definition , 0. ,
     "Method for defining a zone (0=single zone, 1=by partition, 2=by physical)" },
 
   { 0, 0 , 0 , 0. , 0 }
@@ -1080,7 +1091,7 @@ StringXNumber PostProcessingOptions_Number[] = {
     "view, 2=parsed view, 3=STL triangulation, 4=raw text, 5=Gmsh mesh, 6=MED file, "
     "10=automatic)" },
 
-  { F|O, "HorizontalScales" , opt_post_horizontal_scales , 1. , 
+  { F|O, "HorizontalScales" , opt_post_horizontal_scales , 1. ,
     "Display value scales horizontally" },
 
   { F|O, "Link" , opt_post_link , 0. ,
@@ -1101,33 +1112,33 @@ StringXNumber PostProcessingOptions_Number[] = {
 
 StringXNumber ViewOptions_Number[] = {
   { F|O, "AdaptVisualizationGrid" , opt_view_adapt_visualization_grid , 0. ,
-    "Use adaptive visualization grid (for high-order elements)?" }, 
+    "Use adaptive visualization grid (for high-order elements)?" },
   { F|O, "AngleSmoothNormals" , opt_view_angle_smooth_normals , 30.0 ,
     "Threshold angle below which normals are not smoothed" },
   { F|O, "ArrowSizeMax" , opt_view_arrow_size_max , 60. ,
     "Maximum display size of arrows (in pixels)" },
   { F|O, "ArrowSizeMin" , opt_view_arrow_size_min , 0. ,
     "Minimum display size of arrows (in pixels)" },
-  { F|O, "AutoPosition" , opt_view_auto_position , 1. , 
-    "Position the scale or 2D plot automatically" }, 
+  { F|O, "AutoPosition" , opt_view_auto_position , 1. ,
+    "Position the scale or 2D plot automatically" },
   { F|O, "Axes" , opt_view_axes , 0 ,
     "Axes (0=none, 1=simple axes, 2=box, 3=full grid, 4=open grid, 5=ruler)" },
-  { F|O, "AxesMikado" , opt_view_axes_mikado , 0. , 
-    "Mikado axes style" }, 
-  { F|O, "AxesAutoPosition" , opt_view_axes_auto_position , 1. , 
-    "Position the axes automatically" }, 
-  { F|O, "AxesMaxX" , opt_view_axes_xmax , 1. , 
-    "Maximum X-axis coordinate" }, 
-  { F|O, "AxesMaxY" , opt_view_axes_ymax , 1. , 
-    "Maximum Y-axis coordinate" }, 
-  { F|O, "AxesMaxZ" , opt_view_axes_zmax , 1. , 
-    "Maximum Z-axis coordinate" }, 
-  { F|O, "AxesMinX" , opt_view_axes_xmin , 0. , 
-    "Minimum X-axis coordinate" }, 
-  { F|O, "AxesMinY" , opt_view_axes_ymin , 0. , 
-    "Minimum Y-axis coordinate" }, 
-  { F|O, "AxesMinZ" , opt_view_axes_zmin , 0. , 
-    "Minimum Z-axis coordinate" }, 
+  { F|O, "AxesMikado" , opt_view_axes_mikado , 0. ,
+    "Mikado axes style" },
+  { F|O, "AxesAutoPosition" , opt_view_axes_auto_position , 1. ,
+    "Position the axes automatically" },
+  { F|O, "AxesMaxX" , opt_view_axes_xmax , 1. ,
+    "Maximum X-axis coordinate" },
+  { F|O, "AxesMaxY" , opt_view_axes_ymax , 1. ,
+    "Maximum Y-axis coordinate" },
+  { F|O, "AxesMaxZ" , opt_view_axes_zmax , 1. ,
+    "Maximum Z-axis coordinate" },
+  { F|O, "AxesMinX" , opt_view_axes_xmin , 0. ,
+    "Minimum X-axis coordinate" },
+  { F|O, "AxesMinY" , opt_view_axes_ymin , 0. ,
+    "Minimum Y-axis coordinate" },
+  { F|O, "AxesMinZ" , opt_view_axes_zmin , 0. ,
+    "Minimum Z-axis coordinate" },
   { F|O, "AxesTicsX" , opt_view_axes_tics0 , 5. ,
     "Number of tics on the X-axis" },
   { F|O, "AxesTicsY" , opt_view_axes_tics1 , 5. ,
@@ -1139,7 +1150,7 @@ StringXNumber ViewOptions_Number[] = {
     "Draw the `N minus b'-dimensional boundary of the element (N=element "
     "dimension, b=option value)" },
 
-  { F|O, "CenterGlyphs" , opt_view_center_glyphs , 0, 
+  { F|O, "CenterGlyphs" , opt_view_center_glyphs , 0,
     "Center glyphs (arrows, numbers, etc.)? (0=left, 1=centered, 2=right)" },
   { F,   "Clip" , opt_view_clip , 0.,
     "Enable clipping planes? (Plane[i]=2^i, i=0,...,5)" },
@@ -1161,149 +1172,149 @@ StringXNumber ViewOptions_Number[] = {
     "Incremental colormap rotation" },
   { F|O, "ColormapSwap" , opt_view_colormap_swap , 0. ,
     "Swap the min/max values in the colormap?" },
-  { F|O, "ComponentMap0" , opt_view_component_map0 , 0, 
+  { F|O, "ComponentMap0" , opt_view_component_map0 , 0,
     "Forced component 0 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap1" , opt_view_component_map1 , 1, 
+  { F|O, "ComponentMap1" , opt_view_component_map1 , 1,
     "Forced component 1 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap2" , opt_view_component_map2 , 2, 
+  { F|O, "ComponentMap2" , opt_view_component_map2 , 2,
     "Forced component 2 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap3" , opt_view_component_map3 , 3, 
+  { F|O, "ComponentMap3" , opt_view_component_map3 , 3,
     "Forced component 3 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap4" , opt_view_component_map4 , 4, 
+  { F|O, "ComponentMap4" , opt_view_component_map4 , 4,
     "Forced component 4 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap5" , opt_view_component_map5 , 5, 
+  { F|O, "ComponentMap5" , opt_view_component_map5 , 5,
     "Forced component 5 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap6" , opt_view_component_map6 , 6, 
+  { F|O, "ComponentMap6" , opt_view_component_map6 , 6,
     "Forced component 6 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap7" , opt_view_component_map7 , 7, 
+  { F|O, "ComponentMap7" , opt_view_component_map7 , 7,
     "Forced component 7 (if View.ForceComponents > 0)" },
-  { F|O, "ComponentMap8" , opt_view_component_map8 , 8, 
+  { F|O, "ComponentMap8" , opt_view_component_map8 , 8,
     "Forced component 8 (if View.ForceComponents > 0)" },
-  { F,   "CustomMax" , opt_view_custom_max , 0. , 
+  { F,   "CustomMax" , opt_view_custom_max , 0. ,
     "User-defined maximum value to be displayed" },
-  { F,   "CustomMin" , opt_view_custom_min , 0. , 
+  { F,   "CustomMin" , opt_view_custom_min , 0. ,
     "User-defined minimum value to be displayed" },
 
   { F|O, "DisplacementFactor" , opt_view_displacement_factor , 1. ,
     "Displacement amplification" },
-  { F|O, "DrawHexahedra" , opt_view_draw_hexahedra , 1. , 
+  { F|O, "DrawHexahedra" , opt_view_draw_hexahedra , 1. ,
     "Display post-processing hexahedra?" },
-  { F|O, "DrawLines" , opt_view_draw_lines , 1. , 
+  { F|O, "DrawLines" , opt_view_draw_lines , 1. ,
     "Display post-processing lines?" },
   { F|O, "DrawPoints" , opt_view_draw_points , 1. ,
     "Display post-processing points?" },
-  { F|O, "DrawPrisms" , opt_view_draw_prisms , 1. , 
+  { F|O, "DrawPrisms" , opt_view_draw_prisms , 1. ,
     "Display post-processing prisms?" },
-  { F|O, "DrawPyramids" , opt_view_draw_pyramids , 1. , 
+  { F|O, "DrawPyramids" , opt_view_draw_pyramids , 1. ,
     "Display post-processing pyramids?" },
-  { F|O, "DrawQuadrangles" , opt_view_draw_quadrangles , 1. , 
+  { F|O, "DrawQuadrangles" , opt_view_draw_quadrangles , 1. ,
     "Display post-processing quadrangles?" },
-  { F|O, "DrawScalars" , opt_view_draw_scalars , 1. , 
+  { F|O, "DrawScalars" , opt_view_draw_scalars , 1. ,
     "Display scalar values?" },
-  { F|O, "DrawSkinOnly" , opt_view_draw_skin_only , 0. , 
+  { F|O, "DrawSkinOnly" , opt_view_draw_skin_only , 0. ,
     "Draw only the skin of 3D scalar views?" },
   { F|O, "DrawStrings" , opt_view_draw_strings , 1. ,
     "Display post-processing annotation strings?" },
-  { F|O, "DrawTensors" , opt_view_draw_tensors , 1. , 
+  { F|O, "DrawTensors" , opt_view_draw_tensors , 1. ,
     "Display tensor values?" },
-  { F|O, "DrawTetrahedra" , opt_view_draw_tetrahedra , 1. , 
+  { F|O, "DrawTetrahedra" , opt_view_draw_tetrahedra , 1. ,
     "Display post-processing tetrahedra?" },
-  { F|O, "DrawTriangles" , opt_view_draw_triangles , 1. , 
+  { F|O, "DrawTriangles" , opt_view_draw_triangles , 1. ,
     "Display post-processing triangles?" },
-  { F|O, "DrawVectors" , opt_view_draw_vectors , 1. , 
+  { F|O, "DrawVectors" , opt_view_draw_vectors , 1. ,
     "Display vector values?" },
 
-  { F|O, "Explode" , opt_view_explode , 1. , 
+  { F|O, "Explode" , opt_view_explode , 1. ,
     "Element shrinking factor (between 0 and 1)" },
   { F|O, "ExternalView" , opt_view_external_view , -1. ,
     "Index of the view used to color vector fields (-1=self)" },
 
   { F|O, "FakeTransparency" , opt_view_fake_transparency , 0. ,
     "Use fake transparency (cheaper than the real thing, but incorrect)" },
-  { F|O, "ForceNumComponents" , opt_view_force_num_components , 0. , 
+  { F|O, "ForceNumComponents" , opt_view_force_num_components , 0. ,
     "Force number of components to display (see View.ComponentMapN for mapping)" },
 
   { F|O, "GeneralizedRaiseFactor" , opt_view_gen_raise_factor , 1. ,
     "Generalized raise amplification factor" },
   { F|O, "GeneralizedRaiseView" , opt_view_gen_raise_view , -1. ,
     "Index of the view used for generalized raise (-1=self)" },
-  { F|O, "GlyphLocation" , opt_view_glyph_location , 1, 
+  { F|O, "GlyphLocation" , opt_view_glyph_location , 1,
     "Glyph (arrow, number, etc.) location (1=center of gravity, 2=node)" },
 
-  { F|O, "Height" , opt_view_size1 , 200. , 
-    "Height (in pixels) of the scale or 2D plot" }, 
+  { F|O, "Height" , opt_view_size1 , 200. ,
+    "Height (in pixels) of the scale or 2D plot" },
 
   { F|O, "IntervalsType" , opt_view_intervals_type , 2 ,
     "Type of interval display (1=iso, 2=continuous, 3=discrete, 4=numeric)" },
 
   { F|O, "Light" , opt_view_light , 1. ,
     "Enable lighting for the view" },
-  { F|O, "LightLines" , opt_view_light_lines , 1. , 
+  { F|O, "LightLines" , opt_view_light_lines , 1. ,
     "Light element edges" },
-  { F|O, "LightTwoSide" , opt_view_light_two_side , 1. , 
+  { F|O, "LightTwoSide" , opt_view_light_two_side , 1. ,
     "Light both sides of surfaces (leads to slower rendering)" },
-  { F|O, "LineType" , opt_view_line_type , 0. , 
+  { F|O, "LineType" , opt_view_line_type , 0. ,
     "Display lines as solid color segments (0) or 3D cylinders (1)" },
-  { F|O, "LineWidth" , opt_view_line_width , 1.0 , 
+  { F|O, "LineWidth" , opt_view_line_width , 1.0 ,
     "Display width of lines (in pixels)" },
 
-  { F|O,   "MaxRecursionLevel" , opt_view_max_recursion_level , 0. , 
+  { F|O,   "MaxRecursionLevel" , opt_view_max_recursion_level , 0. ,
     "Maximum recursion level for adaptive views" },
-  { F,   "Max" , opt_view_max , 0. , 
+  { F,   "Max" , opt_view_max , 0. ,
     "Maximum value in the view (read-only)" },
-  { F,   "MaxX" , opt_view_xmax , 0. , 
-    "Maximum view coordinate along the X-axis (read-only)" }, 
-  { F,   "MaxY" , opt_view_ymax , 0. , 
-    "Maximum view coordinate along the Y-axis (read-only)" }, 
-  { F,   "MaxZ" , opt_view_zmax , 0. , 
-    "Maximum view coordinate along the Z-axis (read-only)" }, 
+  { F,   "MaxX" , opt_view_xmax , 0. ,
+    "Maximum view coordinate along the X-axis (read-only)" },
+  { F,   "MaxY" , opt_view_ymax , 0. ,
+    "Maximum view coordinate along the Y-axis (read-only)" },
+  { F,   "MaxZ" , opt_view_zmax , 0. ,
+    "Maximum view coordinate along the Z-axis (read-only)" },
   { F,   "Min" , opt_view_min , 0. ,
     "Minimum value in the view (read-only)" },
-  { F,   "MinX" , opt_view_xmin , 0. , 
-    "Minimum view coordinate along the X-axis (read-only)" }, 
-  { F,   "MinY" , opt_view_ymin , 0. , 
-    "Minimum view coordinate along the Y-axis (read-only)" }, 
-  { F,   "MinZ" , opt_view_zmin , 0. , 
-    "Minimum view coordinate along the Z-axis (read-only)" }, 
+  { F,   "MinX" , opt_view_xmin , 0. ,
+    "Minimum view coordinate along the X-axis (read-only)" },
+  { F,   "MinY" , opt_view_ymin , 0. ,
+    "Minimum view coordinate along the Y-axis (read-only)" },
+  { F,   "MinZ" , opt_view_zmin , 0. ,
+    "Minimum view coordinate along the Z-axis (read-only)" },
 
   { F|O, "NbIso" , opt_view_nb_iso , 10. ,
     "Number of intervals" },
   { F,   "NbTimeStep" , opt_view_nb_timestep , 1. ,
     "Number of time steps in the view (do not change this!)" },
-  { F,   "NormalRaise" , opt_view_normal_raise , 0. , 
+  { F,   "NormalRaise" , opt_view_normal_raise , 0. ,
     "Elevation of the view along the normal (in model coordinates)" },
   { F|O, "Normals" , opt_view_normals , 0. ,
-    "Display size of normal vectors (in pixels)" }, 
+    "Display size of normal vectors (in pixels)" },
 
-  { F,   "OffsetX" , opt_view_offset0 , 0. , 
+  { F,   "OffsetX" , opt_view_offset0 , 0. ,
     "Translation of the view along X-axis (in model coordinates)" },
-  { F,   "OffsetY" , opt_view_offset1 , 0. , 
+  { F,   "OffsetY" , opt_view_offset1 , 0. ,
     "Translation of the view along Y-axis (in model coordinates)" },
-  { F,   "OffsetZ" , opt_view_offset2 , 0. , 
+  { F,   "OffsetZ" , opt_view_offset2 , 0. ,
     "Translation of the view along Z-axis (in model coordinates)" },
 
-  { F|O, "PointSize" , opt_view_point_size , 3. , 
+  { F|O, "PointSize" , opt_view_point_size , 3. ,
     "Display size of points (in pixels)" },
-  { F|O, "PointType" , opt_view_point_type , 0. , 
+  { F|O, "PointType" , opt_view_point_type , 0. ,
     "Display points as solid color dots (0), 3D spheres (1), scaled dots "
     "(2) or scaled spheres (3)" },
-  { F|O, "PositionX" , opt_view_position0 , 100. , 
+  { F|O, "PositionX" , opt_view_position0 , 100. ,
     "X position (in pixels) of the scale or 2D plot (< 0: measure from right "
-    "edge; >= 1e5: centered)" }, 
-  { F|O, "PositionY" , opt_view_position1 , 50. , 
+    "edge; >= 1e5: centered)" },
+  { F|O, "PositionY" , opt_view_position1 , 50. ,
     "Y position (in pixels) of the scale or 2D plot (< 0: measure from bottom "
-    "edge; >= 1e5: centered)" }, 
+    "edge; >= 1e5: centered)" },
 
-  { F,   "RaiseX" , opt_view_raise0 , 0. , 
+  { F,   "RaiseX" , opt_view_raise0 , 0. ,
     "Elevation of the view along X-axis (in model coordinates)" },
-  { F,   "RaiseY" , opt_view_raise1 , 0. , 
+  { F,   "RaiseY" , opt_view_raise1 , 0. ,
     "Elevation of the view along Y-axis (in model coordinates)" },
-  { F,   "RaiseZ" , opt_view_raise2 , 0. , 
+  { F,   "RaiseZ" , opt_view_raise2 , 0. ,
     "Elevation of the view along Z-axis (in model coordinates)" },
   { F|O, "RangeType" , opt_view_range_type , 1 ,
     "Value scale range type (1=default, 2=custom, 3=per time step)" },
 
-  { F|O, "Sampling" , opt_view_sampling , 1. , 
+  { F|O, "Sampling" , opt_view_sampling , 1. ,
     "Element sampling rate (draw one out every `Sampling' elements)" },
   { F|O, "SaturateValues" , opt_view_saturate_values , 0. ,
     "Saturate the view values to custom min and max (1=true, 0=false)" },
@@ -1322,9 +1333,9 @@ StringXNumber ViewOptions_Number[] = {
     "Stipple curves in 2D plots?" },
 
   { F|O, "Tangents" , opt_view_tangents , 0. ,
-    "Display size of tangent vectors (in pixels)" }, 
+    "Display size of tangent vectors (in pixels)" },
   { F|O, "TargetError" , opt_view_target_error , 0.01 ,
-    "Target representation error for adaptive views" }, 
+    "Target representation error for adaptive views" },
   { F|O, "TensorType" , opt_view_tensor_type , 1. ,
     "Tensor Visualization Type" },
   { F,   "TimeStep" , opt_view_timestep , 0. ,
@@ -1359,8 +1370,8 @@ StringXNumber ViewOptions_Number[] = {
   { F,   "Visible" , opt_view_visible , 1. ,
     "Is the view visible?" },
 
-  { F|O, "Width" , opt_view_size0 , 300. , 
-    "Width (in pixels) of the scale or 2D plot" }, 
+  { F|O, "Width" , opt_view_size0 , 300. ,
+    "Width (in pixels) of the scale or 2D plot" },
 
   { 0, 0 , 0 , 0. , 0 }
 } ;
@@ -1391,8 +1402,8 @@ StringXNumber PrintOptions_Number[] = {
     "PostScript/PDF quality (0=bitmap, 1=vector (simple sort), 2=vector "
     "(accurate sort), 3=vector (unsorted)" },
 
-  { F|O, "Format" , opt_print_file_format , FORMAT_AUTO , 
-    "File format (10=automatic)" }, 
+  { F|O, "Format" , opt_print_file_format , FORMAT_AUTO ,
+    "File format (10=automatic)" },
 
   { F|O, "GeoLabels" , opt_print_geo_labels , 1. ,
     "Save labels in unrolled Gmsh geometries" },
@@ -1445,10 +1456,10 @@ StringXNumber PrintOptions_Number[] = {
 
 StringXColor GeneralOptions_Color[] = {
   { F|O, "Background" , opt_general_color_background ,
-    {0, 0, 0, 255}, {255, 255, 255, 255}, {255, 255, 255, 255}, 
+    {0, 0, 0, 255}, {255, 255, 255, 255}, {255, 255, 255, 255},
     "Background color" },
   { F|O, "BackgroundGradient" , opt_general_color_background_gradient ,
-    {0, 0, 128, 255}, {128, 147, 255, 255}, {125, 125, 125, 255}, 
+    {0, 0, 128, 255}, {128, 147, 255, 255}, {125, 125, 125, 255},
     "Background gradient color" },
   { F|O, "Foreground" , opt_general_color_foreground ,
     {170, 170, 170, 255}, {85, 85, 85, 255}, {128, 128, 128, 255},
@@ -1475,8 +1486,8 @@ StringXColor GeneralOptions_Color[] = {
 } ;
 
 StringXColor GeometryOptions_Color[] = {
-  { F|O, "Points" , opt_geometry_color_points , 
-    {178, 182, 129, 255}, {90, 90, 90, 255}, {0, 0, 0, 255}, 
+  { F|O, "Points" , opt_geometry_color_points ,
+    {178, 182, 129, 255}, {90, 90, 90, 255}, {0, 0, 0, 255},
     "Normal geometry point color" },
   { F|O, "Lines" , opt_geometry_color_lines ,
     {0, 0, 255, 255}, {0, 0, 255, 255}, {0, 0, 0, 255},
@@ -1539,26 +1550,26 @@ StringXColor GeometryOptions_Color[] = {
 #define COL19 {184, 0, 255, 255}
 
 StringXColor MeshOptions_Color[] = {
-  { F|O, "Points" , opt_mesh_color_points , 
+  { F|O, "Points" , opt_mesh_color_points ,
     {0, 0, 255, 255}, {0, 0, 255, 255}, {0, 0, 0, 255},
     "Mesh node color" },
-  { F|O, "PointsSup" , opt_mesh_color_points_sup , 
+  { F|O, "PointsSup" , opt_mesh_color_points_sup ,
     {255, 0, 255, 255}, {255, 0, 255, 255}, {0, 0, 0, 255},
     "Second order mesh node color" },
-  { F|O, "Lines" , opt_mesh_color_lines , 
+  { F|O, "Lines" , opt_mesh_color_lines ,
     {0, 0, 0, 255}, {0, 0, 0, 255}, {0, 0, 0, 255},
     "Mesh line color" },
-  { F|O, "Triangles" , opt_mesh_color_triangles , 
-    COLT, COLT, COLW, 
+  { F|O, "Triangles" , opt_mesh_color_triangles ,
+    COLT, COLT, COLW,
     "Mesh triangle color (if Mesh.ColorCarousel=0)" },
   { F|O, "Quadrangles" , opt_mesh_color_quadrangles ,
-    COLQ, COLQ, COLW, 
+    COLQ, COLQ, COLW,
     "Mesh quadrangle color (if Mesh.ColorCarousel=0)" },
   { F|O, "Tetrahedra" , opt_mesh_color_tetrahedra ,
     COLT, COLT, COLW,
      "Mesh tetrahedron color (if Mesh.ColorCarousel=0)" },
   { F|O, "Hexahedra" , opt_mesh_color_hexahedra ,
-    COLQ, COLQ, COLW, 
+    COLQ, COLQ, COLW,
     "Mesh hexahedron color (if Mesh.ColorCarousel=0)" },
   { F|O, "Prisms" , opt_mesh_color_prisms ,
     COLP, COLP, COLW,
@@ -1572,45 +1583,45 @@ StringXColor MeshOptions_Color[] = {
   { F|O, "Normals" , opt_mesh_color_normals ,
     {255, 0, 0, 255}, {255, 0, 0, 255}, {0, 0, 0, 255},
     "Normal mesh vector color" },
-  { F|O, "Zero"     , opt_mesh_color_0 , COL0, COL0, COLW, 
+  { F|O, "Zero"     , opt_mesh_color_0 , COL0, COL0, COLW,
     "Color 0 in color carousel" },
-  { F|O, "One"      , opt_mesh_color_1 , COL1, COL1, COLW, 
+  { F|O, "One"      , opt_mesh_color_1 , COL1, COL1, COLW,
     "Color 1 in color carousel" },
-  { F|O, "Two"      , opt_mesh_color_2 , COL2, COL2, COLW, 
+  { F|O, "Two"      , opt_mesh_color_2 , COL2, COL2, COLW,
     "Color 2 in color carousel" },
-  { F|O, "Three"    , opt_mesh_color_3 , COL3, COL3, COLW, 
+  { F|O, "Three"    , opt_mesh_color_3 , COL3, COL3, COLW,
     "Color 3 in color carousel" },
-  { F|O, "Four"     , opt_mesh_color_4 , COL4, COL4, COLW, 
+  { F|O, "Four"     , opt_mesh_color_4 , COL4, COL4, COLW,
     "Color 4 in color carousel" },
-  { F|O, "Five"     , opt_mesh_color_5 , COL5, COL5, COLW, 
+  { F|O, "Five"     , opt_mesh_color_5 , COL5, COL5, COLW,
     "Color 5 in color carousel" },
-  { F|O, "Six"      , opt_mesh_color_6 , COL6, COL6, COLW, 
+  { F|O, "Six"      , opt_mesh_color_6 , COL6, COL6, COLW,
     "Color 6 in color carousel" },
-  { F|O, "Seven"    , opt_mesh_color_7 , COL7, COL7, COLW, 
+  { F|O, "Seven"    , opt_mesh_color_7 , COL7, COL7, COLW,
     "Color 7 in color carousel" },
-  { F|O, "Eight"    , opt_mesh_color_8 , COL8, COL8, COLW, 
+  { F|O, "Eight"    , opt_mesh_color_8 , COL8, COL8, COLW,
     "Color 8 in color carousel" },
-  { F|O, "Nine"     , opt_mesh_color_9 , COL9, COL9, COLW, 
+  { F|O, "Nine"     , opt_mesh_color_9 , COL9, COL9, COLW,
     "Color 9 in color carousel" },
-  { F|O, "Ten"      , opt_mesh_color_10, COL10, COL10, COLW, 
+  { F|O, "Ten"      , opt_mesh_color_10, COL10, COL10, COLW,
     "Color 10 in color carousel" },
-  { F|O, "Eleven"   , opt_mesh_color_11, COL11, COL11, COLW, 
+  { F|O, "Eleven"   , opt_mesh_color_11, COL11, COL11, COLW,
     "Color 11 in color carousel" },
-  { F|O, "Twelve"   , opt_mesh_color_12, COL12, COL12, COLW, 
+  { F|O, "Twelve"   , opt_mesh_color_12, COL12, COL12, COLW,
     "Color 12 in color carousel" },
-  { F|O, "Thirteen" , opt_mesh_color_13, COL13, COL13, COLW, 
+  { F|O, "Thirteen" , opt_mesh_color_13, COL13, COL13, COLW,
     "Color 13 in color carousel" },
-  { F|O, "Fourteen" , opt_mesh_color_14, COL14, COL14, COLW, 
+  { F|O, "Fourteen" , opt_mesh_color_14, COL14, COL14, COLW,
     "Color 14 in color carousel" },
-  { F|O, "Fifteen"  , opt_mesh_color_15, COL15, COL15, COLW, 
+  { F|O, "Fifteen"  , opt_mesh_color_15, COL15, COL15, COLW,
     "Color 15 in color carousel" },
-  { F|O, "Sixteen"  , opt_mesh_color_16, COL16, COL16, COLW, 
+  { F|O, "Sixteen"  , opt_mesh_color_16, COL16, COL16, COLW,
     "Color 16 in color carousel" },
-  { F|O, "Seventeen", opt_mesh_color_17, COL17, COL17, COLW, 
+  { F|O, "Seventeen", opt_mesh_color_17, COL17, COL17, COLW,
     "Color 17 in color carousel" },
-  { F|O, "Eighteen" , opt_mesh_color_18, COL18, COL18, COLW, 
+  { F|O, "Eighteen" , opt_mesh_color_18, COL18, COL18, COLW,
     "Color 18 in color carousel" },
-  { F|O, "Nineteen" , opt_mesh_color_19, COL19, COL19, COLW, 
+  { F|O, "Nineteen" , opt_mesh_color_19, COL19, COL19, COLW,
     "Color 19 in color carousel" },
   { 0, 0 , 0 , {0, 0, 0, 0}, {0, 0, 0, 0}, {0, 0, 0, 0} , 0 }
 } ;
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 2647bbc61cedc9fc8171a4f4295a63bfc493382d..2d148c1ad5ef95dc0bb7df4afa3a721d68a5a425 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -50,7 +50,7 @@
 
 // General routines for string options
 
-bool StringOption(int action, const char *category, int num, 
+bool StringOption(int action, const char *category, int num,
                   const char *name, std::string &val)
 {
   StringXString *s = 0;
@@ -102,7 +102,7 @@ static void SetStringOptionsGUI(int num, StringXString s[])
   }
 }
 
-static void PrintStringOptions(int num, int level, int diff, int help, 
+static void PrintStringOptions(int num, int level, int diff, int help,
                                StringXString s[], const char *prefix, FILE *file)
 {
   int i = 0;
@@ -111,7 +111,7 @@ static void PrintStringOptions(int num, int level, int diff, int help,
       if(!diff || s[i].function(num, GMSH_GET, "") != s[i].def){
         char tmp[1024];
         sprintf(tmp, "%s%s = \"%s\";%s%s", prefix,
-                s[i].str, s[i].function(num, GMSH_GET, "").c_str(), 
+                s[i].str, s[i].function(num, GMSH_GET, "").c_str(),
                 help ? " // " : "", help ? s[i].help : "");
         if(file)
           fprintf(file, "%s\n", tmp);
@@ -163,7 +163,7 @@ static void PrintStringOptionsDoc(StringXString s[], const char *prefix, FILE *f
 
 // General routines for numeric options
 
-bool NumberOption(int action, const char *category, int num, 
+bool NumberOption(int action, const char *category, int num,
                   const char *name, double &val)
 {
   StringXNumber *s = 0;
@@ -223,7 +223,7 @@ static void PrintNumberOptions(int num, int level, int diff, int help,
     if(s[i].level & level) {
       if(!diff || (s[i].function(num, GMSH_GET, 0) != s[i].def)){
         sprintf(tmp, "%s%s = %.16g;%s%s", prefix,
-                s[i].str, s[i].function(num, GMSH_GET, 0), 
+                s[i].str, s[i].function(num, GMSH_GET, 0),
                 help ? " // " : "", help ? s[i].help : "");
         if(file)
           fprintf(file, "%s\n", tmp);
@@ -249,7 +249,7 @@ static void PrintNumberOptionsDoc(StringXNumber s[], const char *prefix, FILE *
 
 // General routines for color options
 
-bool ColorOption(int action, const char *category, int num, 
+bool ColorOption(int action, const char *category, int num,
                  const char *name, unsigned int &val)
 {
   StringXColor *s = 0;
@@ -344,15 +344,15 @@ static void PrintColorOptions(int num, int level, int diff, int help,
     if(s[i].level & level) {
       unsigned int def;
       switch (CTX::instance()->colorScheme) {
-      case 1: 
+      case 1:
         def = CTX::instance()->packColor
           (s[i].def2[0], s[i].def2[1], s[i].def2[2], s[i].def2[3]);
         break;
-      case 2: 
+      case 2:
         def = CTX::instance()->packColor
           (s[i].def3[0], s[i].def3[1], s[i].def3[2], s[i].def3[3]);
         break;
-      default: 
+      default:
         def = CTX::instance()->packColor
           (s[i].def1[0], s[i].def1[1], s[i].def1[2], s[i].def1[3]);
         break;
@@ -362,7 +362,7 @@ static void PrintColorOptions(int num, int level, int diff, int help,
                 prefix, s[i].str,
                 CTX::instance()->unpackRed(s[i].function(num, GMSH_GET, 0)),
                 CTX::instance()->unpackGreen(s[i].function(num, GMSH_GET, 0)),
-                CTX::instance()->unpackBlue(s[i].function(num, GMSH_GET, 0)), 
+                CTX::instance()->unpackBlue(s[i].function(num, GMSH_GET, 0)),
                 help ? " // " : "", help ? s[i].help : "");
         if(file)
           fprintf(file, "%s\n", tmp);
@@ -426,13 +426,13 @@ void ReInitOptions(int num)
   // horrible trick so that opt_view_XXX will act on the reference view
 #if defined(HAVE_POST)
   std::vector<PView*> tmp = PView::list;
-  PView::list.clear(); 
+  PView::list.clear();
 #endif
 
   InitOptions(num);
 
 #if defined(HAVE_POST)
-  PView::list = tmp; 
+  PView::list = tmp;
   for(unsigned int i = 0; i < PView::list.size(); i++)
     PView::list[i]->setOptions();
 #endif
@@ -509,7 +509,7 @@ static void PrintColorTable(int num, int diff, const char *prefix, FILE *file)
     // compare the current colormap with a vanilla colormap having the
     // parameters
     GmshColorTable ref;
-    ColorTable_InitParam(opt->colorTable.ipar[COLORTABLE_NUMBER], &ref); 
+    ColorTable_InitParam(opt->colorTable.ipar[COLORTABLE_NUMBER], &ref);
     for(int i = 0; i < COLORTABLE_NBMAX_PARAM; i++){
       ref.ipar[i] = opt->colorTable.ipar[i];
       ref.dpar[i] = opt->colorTable.dpar[i];
@@ -670,7 +670,7 @@ void PrintOptionsDoc()
     "@c This file is generated automatically by running \"gmsh -doc\".\n"
     "@c Do not edit by hand!\n"
     "@c\n\n";
-  
+
   FILE *file = fopen("opt_general.texi", "w");
   if(!file) {
     Msg::Error("Unable to open file 'opt_general.texi'");
@@ -1143,8 +1143,8 @@ std::string opt_solver_name4(OPT_ARGS_STR)
 std::string opt_solver_executable(OPT_ARGS_STR)
 {
   if(action & GMSH_SET)
-    CTX::instance()->solver.commandLine[num] = val;
-  return CTX::instance()->solver.commandLine[num];
+    CTX::instance()->solver.executable[num] = val;
+  return CTX::instance()->solver.executable[num];
 }
 
 std::string opt_solver_executable0(OPT_ARGS_STR)
@@ -1172,6 +1172,38 @@ std::string opt_solver_executable4(OPT_ARGS_STR)
   return opt_solver_executable(4, action, val);
 }
 
+std::string opt_solver_hostname(OPT_ARGS_STR)
+{
+  if(action & GMSH_SET)
+    CTX::instance()->solver.hostname[num] = val;
+  return CTX::instance()->solver.hostname[num];
+}
+
+std::string opt_solver_hostname0(OPT_ARGS_STR)
+{
+  return opt_solver_hostname(0, action, val);
+}
+
+std::string opt_solver_hostname1(OPT_ARGS_STR)
+{
+  return opt_solver_hostname(1, action, val);
+}
+
+std::string opt_solver_hostname2(OPT_ARGS_STR)
+{
+  return opt_solver_hostname(2, action, val);
+}
+
+std::string opt_solver_hostname3(OPT_ARGS_STR)
+{
+  return opt_solver_hostname(3, action, val);
+}
+
+std::string opt_solver_hostname4(OPT_ARGS_STR)
+{
+  return opt_solver_hostname(4, action, val);
+}
+
 #if defined(HAVE_FLTK)
 int _gui_action_valid(int action, int num)
 {
@@ -1183,7 +1215,7 @@ int _gui_action_valid(int action, int num)
 std::string opt_view_name(OPT_ARGS_STR)
 {
 #if defined(HAVE_POST)
-  GET_VIEW(""); 
+  GET_VIEW("");
   if(!data) return "";
   if(action & GMSH_SET) {
     data->setName(val);
@@ -1191,9 +1223,9 @@ std::string opt_view_name(OPT_ARGS_STR)
     // change name in GUI for the view and its aliases
     if(FlGui::available()){
       for(int i = 0; i < (int)PView::list.size(); i++){
-        if((i == num || 
+        if((i == num ||
             PView::list[i]->getAliasOf() == view->getNum() ||
-            PView::list[i]->getNum() == view->getAliasOf()) && 
+            PView::list[i]->getNum() == view->getAliasOf()) &&
            i < (int)FlGui::instance()->menu->toggle.size()) {
           FlGui::instance()->menu->toggle[i]->copy_label(data->getName().c_str());
           FlGui::instance()->menu->toggle[i]->redraw();
@@ -1428,7 +1460,7 @@ void _string2stipple(std::string str, int &repeat, int &pattern)
   }
   else{
     repeat = (int)str[0] - '0';
-    pattern = 16 * 16 * 16 * _h2d(str[4]) + 16 * 16 * _h2d(str[5]) + 
+    pattern = 16 * 16 * 16 * _h2d(str[4]) + 16 * 16 * _h2d(str[5]) +
       16 * _h2d(str[6]) + _h2d(str[7]);
   }
 }
@@ -1874,7 +1906,7 @@ double opt_general_visibility_position1(OPT_ARGS_NUM)
     CTX::instance()->visPosition[1] = (int)val;
   return CTX::instance()->visPosition[1];
 }
- 
+
 double opt_general_clip_position0(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
@@ -2181,10 +2213,10 @@ double opt_general_clip_factor(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     // should NEVER be zero (or negative)
-    if(val < 0.01) 
+    if(val < 0.01)
       CTX::instance()->clipFactor = 0.01;
     else
-      CTX::instance()->clipFactor = val;    
+      CTX::instance()->clipFactor = val;
   }
 #if defined(HAVE_FLTK)
   if(FlGui::available() && (action & GMSH_GUI))
@@ -2197,7 +2229,7 @@ double opt_general_clip_factor(OPT_ARGS_NUM)
 double opt_general_display_border_factor(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET)
-    CTX::instance()->displayBorderFactor = val;    
+    CTX::instance()->displayBorderFactor = val;
   return CTX::instance()->displayBorderFactor;
 }
 
@@ -2875,10 +2907,10 @@ double opt_general_stereo_mode(OPT_ARGS_NUM)
 
 double opt_general_eye_sep_ratio(OPT_ARGS_NUM)
 {
-  if(action & GMSH_SET)   
+  if(action & GMSH_SET)
     CTX::instance()->eye_sep_ratio =  (double)val;
 #if defined(HAVE_FLTK)
-  if(FlGui::available() && (action & GMSH_GUI))   
+  if(FlGui::available() && (action & GMSH_GUI))
     FlGui::instance()->options->general.value[29]->value
       (CTX::instance()->eye_sep_ratio) ;
 #endif
@@ -3474,8 +3506,8 @@ double opt_geometry_transform(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     CTX::instance()->geom.useTransform = (int)val;
-    if(CTX::instance()->geom.useTransform < 0 || 
-       CTX::instance()->geom.useTransform > 1) 
+    if(CTX::instance()->geom.useTransform < 0 ||
+       CTX::instance()->geom.useTransform > 1)
       CTX::instance()->geom.useTransform = 0;
   }
 #if defined(HAVE_FLTK)
@@ -3514,7 +3546,7 @@ static double _opt_geometry_transform(OPT_ARGS_NUM, int ii, int jj, int nn)
     if(action & GMSH_SET){
       drawTransform *tr = FlGui::instance()->graph[0]->gl[0]->
         getDrawContext()->getTransform();
-      if(tr) tr->setMatrix(CTX::instance()->geom.transform, 
+      if(tr) tr->setMatrix(CTX::instance()->geom.transform,
                            CTX::instance()->geom.offset);
     }
   }
@@ -3579,7 +3611,7 @@ static double _opt_geometry_offset(OPT_ARGS_NUM, int ii, int nn)
     if(action & GMSH_SET){
       drawTransform *tr = FlGui::instance()->graph[0]->gl[0]->
         getDrawContext()->getTransform();
-      if(tr) tr->setMatrix(CTX::instance()->geom.transform, 
+      if(tr) tr->setMatrix(CTX::instance()->geom.transform,
                            CTX::instance()->geom.offset);
     }
   }
@@ -4094,7 +4126,7 @@ double opt_mesh_remove_4_triangles(OPT_ARGS_NUM)
       (CTX::instance()->mesh.remove4triangles);
 #endif
   return CTX::instance()->mesh.remove4triangles;
-  
+
 }
 
 double opt_mesh_refine_steps(OPT_ARGS_NUM)
@@ -4120,7 +4152,7 @@ double opt_mesh_normals(OPT_ARGS_NUM)
 double opt_mesh_num_sub_edges(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
-    if(CTX::instance()->mesh.numSubEdges != val) 
+    if(CTX::instance()->mesh.numSubEdges != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.numSubEdges = (int)val;
     if(CTX::instance()->mesh.numSubEdges < 1)
@@ -4150,7 +4182,7 @@ double opt_mesh_tangents(OPT_ARGS_NUM)
 double opt_mesh_explode(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.explode != val) 
+    if(CTX::instance()->mesh.explode != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.explode = val;
   }
@@ -4267,7 +4299,7 @@ double opt_mesh_rand_factor(OPT_ARGS_NUM)
 double opt_mesh_quality_type(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.qualityType != val) 
+    if(CTX::instance()->mesh.qualityType != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.qualityType = (int)val;
     if(CTX::instance()->mesh.qualityType < 0 || CTX::instance()->mesh.qualityType > 3)
@@ -4285,7 +4317,7 @@ double opt_mesh_quality_type(OPT_ARGS_NUM)
 double opt_mesh_quality_inf(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.qualityInf != val) 
+    if(CTX::instance()->mesh.qualityInf != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.qualityInf = val;
   }
@@ -4300,7 +4332,7 @@ double opt_mesh_quality_inf(OPT_ARGS_NUM)
 double opt_mesh_quality_sup(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.qualitySup != val) 
+    if(CTX::instance()->mesh.qualitySup != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.qualitySup = val;
   }
@@ -4315,7 +4347,7 @@ double opt_mesh_quality_sup(OPT_ARGS_NUM)
 double opt_mesh_radius_inf(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.radiusInf != val) 
+    if(CTX::instance()->mesh.radiusInf != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.radiusInf = val;
   }
@@ -4330,7 +4362,7 @@ double opt_mesh_radius_inf(OPT_ARGS_NUM)
 double opt_mesh_radius_sup(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.radiusSup != val) 
+    if(CTX::instance()->mesh.radiusSup != val)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.radiusSup = val;
   }
@@ -4374,7 +4406,7 @@ double opt_mesh_points(OPT_ARGS_NUM)
 double opt_mesh_lines(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.lines != val) 
+    if(CTX::instance()->mesh.lines != val)
       CTX::instance()->mesh.changed |= ENT_LINE;
     CTX::instance()->mesh.lines = (int)val;
   }
@@ -4389,7 +4421,7 @@ double opt_mesh_lines(OPT_ARGS_NUM)
 double opt_mesh_triangles(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.triangles != val) 
+    if(CTX::instance()->mesh.triangles != val)
       CTX::instance()->mesh.changed |= ENT_SURFACE;
     CTX::instance()->mesh.triangles = (int)val;
   }
@@ -4407,7 +4439,7 @@ double opt_mesh_triangles(OPT_ARGS_NUM)
 double opt_mesh_quadrangles(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.quadrangles != val) 
+    if(CTX::instance()->mesh.quadrangles != val)
       CTX::instance()->mesh.changed |= ENT_SURFACE;
     CTX::instance()->mesh.quadrangles = (int)val;
   }
@@ -4425,7 +4457,7 @@ double opt_mesh_quadrangles(OPT_ARGS_NUM)
 double opt_mesh_tetrahedra(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.tetrahedra != val) 
+    if(CTX::instance()->mesh.tetrahedra != val)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->mesh.tetrahedra = (int)val;
   }
@@ -4443,7 +4475,7 @@ double opt_mesh_tetrahedra(OPT_ARGS_NUM)
 double opt_mesh_hexahedra(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.hexahedra != val) 
+    if(CTX::instance()->mesh.hexahedra != val)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->mesh.hexahedra = (int)val;
   }
@@ -4461,7 +4493,7 @@ double opt_mesh_hexahedra(OPT_ARGS_NUM)
 double opt_mesh_prisms(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.prisms != val) 
+    if(CTX::instance()->mesh.prisms != val)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->mesh.prisms = (int)val;
   }
@@ -4497,7 +4529,7 @@ double opt_mesh_pyramids(OPT_ARGS_NUM)
 double opt_mesh_surfaces_edges(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET) {
-    if(CTX::instance()->mesh.surfacesEdges != val) 
+    if(CTX::instance()->mesh.surfacesEdges != val)
       CTX::instance()->mesh.changed |= ENT_SURFACE;
     CTX::instance()->mesh.surfacesEdges = (int)val;
   }
@@ -4691,14 +4723,14 @@ double opt_mesh_smooth_normals(OPT_ARGS_NUM)
 
 double opt_mesh_smooth_ratio(OPT_ARGS_NUM)
 {
-  if(action & GMSH_SET) 
+  if(action & GMSH_SET)
     CTX::instance()->mesh.smoothRatio = val;
   return CTX::instance()->mesh.smoothRatio;
 }
 
 double opt_mesh_aniso_max(OPT_ARGS_NUM)
 {
-  if(action & GMSH_SET) 
+  if(action & GMSH_SET)
     CTX::instance()->mesh.anisoMax = val;
   return CTX::instance()->mesh.anisoMax;
 }
@@ -4777,44 +4809,44 @@ double opt_mesh_msh_file_partitioned(OPT_ARGS_NUM)
   return CTX::instance()->mesh.mshFilePartitioned;
 }
 
-double opt_mesh_partition_hex_weight(OPT_ARGS_NUM) 
+double opt_mesh_partition_hex_weight(OPT_ARGS_NUM)
 {
-  if (action & GMSH_SET) 
+  if (action & GMSH_SET)
     CTX::instance()->partitionOptions.hexWeight = (int) val;
   return CTX::instance()->partitionOptions.hexWeight;
 }
 
-double opt_mesh_partition_pri_weight(OPT_ARGS_NUM) 
+double opt_mesh_partition_pri_weight(OPT_ARGS_NUM)
 {
-  if (action & GMSH_SET) 
+  if (action & GMSH_SET)
     CTX::instance()->partitionOptions.priWeight = (int) val;
   return CTX::instance()->partitionOptions.priWeight;
 }
 
-double opt_mesh_partition_pyr_weight(OPT_ARGS_NUM) 
+double opt_mesh_partition_pyr_weight(OPT_ARGS_NUM)
 {
-  if (action & GMSH_SET) 
+  if (action & GMSH_SET)
     CTX::instance()->partitionOptions.pyrWeight = (int) val;
   return CTX::instance()->partitionOptions.pyrWeight;
 }
 
-double opt_mesh_partition_qua_weight(OPT_ARGS_NUM) 
+double opt_mesh_partition_qua_weight(OPT_ARGS_NUM)
 {
-  if (action & GMSH_SET) 
+  if (action & GMSH_SET)
     CTX::instance()->partitionOptions.quaWeight = (int) val;
   return CTX::instance()->partitionOptions.quaWeight;
 }
 
-double opt_mesh_partition_tet_weight(OPT_ARGS_NUM) 
+double opt_mesh_partition_tet_weight(OPT_ARGS_NUM)
 {
-  if (action & GMSH_SET) 
+  if (action & GMSH_SET)
     CTX::instance()->partitionOptions.tetWeight = (int) val;
   return CTX::instance()->partitionOptions.tetWeight;
 }
 
-double opt_mesh_partition_tri_weight(OPT_ARGS_NUM) 
+double opt_mesh_partition_tri_weight(OPT_ARGS_NUM)
 {
-  if (action & GMSH_SET) 
+  if (action & GMSH_SET)
     CTX::instance()->partitionOptions.triWeight = (int) val;
   return CTX::instance()->partitionOptions.triWeight;
 }
@@ -4884,7 +4916,7 @@ double opt_mesh_algo_recombine(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     CTX::instance()->mesh.algoRecombine = (int)val;
-    if(CTX::instance()->mesh.algoRecombine < 0 && 
+    if(CTX::instance()->mesh.algoRecombine < 0 &&
        CTX::instance()->mesh.algoRecombine > 1)
       CTX::instance()->mesh.algoRecombine = 0;
   }
@@ -4914,7 +4946,7 @@ double opt_mesh_remesh_algo(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     CTX::instance()->mesh.remeshAlgo = (int)val;
-    if(CTX::instance()->mesh.remeshAlgo < 0 && 
+    if(CTX::instance()->mesh.remeshAlgo < 0 &&
        CTX::instance()->mesh.remeshAlgo > 2)
       CTX::instance()->mesh.remeshAlgo = 0;
   }
@@ -4931,7 +4963,7 @@ double opt_mesh_remesh_param(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     CTX::instance()->mesh.remeshParam = (int)val;
-    if(CTX::instance()->mesh.remeshParam < 0 && 
+    if(CTX::instance()->mesh.remeshParam < 0 &&
        CTX::instance()->mesh.remeshParam > 2)
       CTX::instance()->mesh.remeshParam = 0;
   }
@@ -4948,7 +4980,7 @@ double opt_mesh_algo_subdivide(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     CTX::instance()->mesh.algoSubdivide = (int)val;
-    if(CTX::instance()->mesh.algoSubdivide < 0 && 
+    if(CTX::instance()->mesh.algoSubdivide < 0 &&
        CTX::instance()->mesh.algoSubdivide > 2)
       CTX::instance()->mesh.algoSubdivide = 0;
   }
@@ -5141,11 +5173,11 @@ double opt_mesh_color_carousel(OPT_ARGS_NUM)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type or by partition
-    if(CTX::instance()->mesh.colorCarousel != (int)val && 
+    if(CTX::instance()->mesh.colorCarousel != (int)val &&
        ((val == 0. || val == 3.) || CTX::instance()->pickElements))
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->mesh.colorCarousel = (int)val;
-    if(CTX::instance()->mesh.colorCarousel < 0 || 
+    if(CTX::instance()->mesh.colorCarousel < 0 ||
        CTX::instance()->mesh.colorCarousel > 3)
       CTX::instance()->mesh.colorCarousel = 0;
   }
@@ -5170,7 +5202,7 @@ double opt_mesh_zone_definition(OPT_ARGS_NUM)
 {
   if(action & GMSH_SET){
     CTX::instance()->mesh.zoneDefinition = (int)val;
-    if( (CTX::instance()->mesh.zoneDefinition < 0 || 
+    if( (CTX::instance()->mesh.zoneDefinition < 0 ||
          CTX::instance()->mesh.zoneDefinition > 2) ||
         (CTX::instance()->mesh.zoneDefinition == 1 &&
          GModel::current()->getMinPartitionSize() +
@@ -6215,7 +6247,7 @@ double opt_view_visible(OPT_ARGS_NUM)
     opt->visible = (int)val;
   }
 #if defined(HAVE_FLTK)
-  if(FlGui::available() && (action & GMSH_GUI) && num >= 0 && 
+  if(FlGui::available() && (action & GMSH_GUI) && num >= 0 &&
      num < (int)FlGui::instance()->menu->toggle.size())
     FlGui::instance()->menu->toggle[num]->value(opt->visible);
 #endif
@@ -7311,7 +7343,7 @@ double opt_view_point_type(OPT_ARGS_NUM)
   GET_VIEW(0.);
   if(action & GMSH_SET) {
     opt->pointType = (int)val;
-    if(opt->pointType < 0 || opt->pointType > 3) 
+    if(opt->pointType < 0 || opt->pointType > 3)
       opt->pointType = 0;
     if(view) view->setChanged(true);
   }
@@ -7332,7 +7364,7 @@ double opt_view_line_type(OPT_ARGS_NUM)
   GET_VIEW(0.);
   if(action & GMSH_SET) {
     opt->lineType = (int)val;
-    if(opt->lineType < 0 || opt->lineType > 2) 
+    if(opt->lineType < 0 || opt->lineType > 2)
       opt->lineType = 0;
     if(view) view->setChanged(true);
   }
@@ -8144,7 +8176,7 @@ unsigned int opt_mesh_color_lines(OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type
-    if(CTX::instance()->color.mesh.line != val && 
+    if(CTX::instance()->color.mesh.line != val &&
        CTX::instance()->mesh.colorCarousel == 0)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->color.mesh.line = val;
@@ -8176,7 +8208,7 @@ unsigned int opt_mesh_color_quadrangles(OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type
-    if(CTX::instance()->color.mesh.quadrangle != val && 
+    if(CTX::instance()->color.mesh.quadrangle != val &&
        CTX::instance()->mesh.colorCarousel == 0)
       CTX::instance()->mesh.changed |= ENT_SURFACE;
     CTX::instance()->color.mesh.quadrangle = val;
@@ -8192,7 +8224,7 @@ unsigned int opt_mesh_color_tetrahedra(OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type
-    if(CTX::instance()->color.mesh.tetrahedron != val && 
+    if(CTX::instance()->color.mesh.tetrahedron != val &&
        CTX::instance()->mesh.colorCarousel == 0)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->color.mesh.tetrahedron = val;
@@ -8208,13 +8240,13 @@ unsigned int opt_mesh_color_hexahedra(OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type
-    if(CTX::instance()->color.mesh.hexahedron != val && 
+    if(CTX::instance()->color.mesh.hexahedron != val &&
        CTX::instance()->mesh.colorCarousel == 0)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->color.mesh.hexahedron = val;
   }
 #if defined(HAVE_FLTK)
-  CCC(CTX::instance()->color.mesh.hexahedron, 
+  CCC(CTX::instance()->color.mesh.hexahedron,
       FlGui::instance()->options->mesh.color[6]);
 #endif
   return CTX::instance()->color.mesh.hexahedron;
@@ -8225,7 +8257,7 @@ unsigned int opt_mesh_color_prisms(OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type
-    if(CTX::instance()->color.mesh.prism != val && 
+    if(CTX::instance()->color.mesh.prism != val &&
        CTX::instance()->mesh.colorCarousel == 0)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->color.mesh.prism = val;
@@ -8241,7 +8273,7 @@ unsigned int opt_mesh_color_pyramid(OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // element type
-    if(CTX::instance()->color.mesh.pyramid != val && 
+    if(CTX::instance()->color.mesh.pyramid != val &&
        CTX::instance()->mesh.colorCarousel == 0)
       CTX::instance()->mesh.changed |= ENT_VOLUME;
     CTX::instance()->color.mesh.pyramid = val;
@@ -8279,7 +8311,7 @@ unsigned int opt_mesh_color_(int i, OPT_ARGS_COL)
   if(action & GMSH_SET) {
     // vertex arrays need to be regenerated only when we color by
     // partition
-    if(CTX::instance()->color.mesh.carousel[i] != val && 
+    if(CTX::instance()->color.mesh.carousel[i] != val &&
        CTX::instance()->mesh.colorCarousel == 3)
       CTX::instance()->mesh.changed |= (ENT_LINE | ENT_SURFACE | ENT_VOLUME);
     CTX::instance()->color.mesh.carousel[i] = val;
diff --git a/Common/Options.h b/Common/Options.h
index 7979e94e0790fd08e9bf3229cd0a82b069ad47eb..0c43e95f5765ec4755cac4ded40eb08c5ee85b12 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -22,7 +22,7 @@
 #define OPT_ARGS_STR   int num, int action, std::string val
 #define OPT_ARGS_NUM   int num, int action, double val
 #define OPT_ARGS_COL   int num, int action, unsigned int val
- 
+
 // STRINGS
 
 std::string opt_general_axes_label0(OPT_ARGS_STR);
@@ -63,6 +63,12 @@ std::string opt_solver_executable1(OPT_ARGS_STR);
 std::string opt_solver_executable2(OPT_ARGS_STR);
 std::string opt_solver_executable3(OPT_ARGS_STR);
 std::string opt_solver_executable4(OPT_ARGS_STR);
+std::string opt_solver_hostname(OPT_ARGS_STR);
+std::string opt_solver_hostname0(OPT_ARGS_STR);
+std::string opt_solver_hostname1(OPT_ARGS_STR);
+std::string opt_solver_hostname2(OPT_ARGS_STR);
+std::string opt_solver_hostname3(OPT_ARGS_STR);
+std::string opt_solver_hostname4(OPT_ARGS_STR);
 std::string opt_view_name(OPT_ARGS_STR);
 std::string opt_view_format(OPT_ARGS_STR);
 std::string opt_view_filename(OPT_ARGS_STR);
@@ -609,7 +615,7 @@ unsigned int opt_general_color_small_axes(OPT_ARGS_COL);
 unsigned int opt_general_color_ambient_light(OPT_ARGS_COL);
 unsigned int opt_general_color_diffuse_light(OPT_ARGS_COL);
 unsigned int opt_general_color_specular_light(OPT_ARGS_COL);
-unsigned int opt_geometry_color_points(OPT_ARGS_COL); 
+unsigned int opt_geometry_color_points(OPT_ARGS_COL);
 unsigned int opt_geometry_color_lines(OPT_ARGS_COL);
 unsigned int opt_geometry_color_surfaces(OPT_ARGS_COL);
 unsigned int opt_geometry_color_volumes(OPT_ARGS_COL);
@@ -620,9 +626,9 @@ unsigned int opt_geometry_color_highlight2(OPT_ARGS_COL);
 unsigned int opt_geometry_color_tangents(OPT_ARGS_COL);
 unsigned int opt_geometry_color_normals(OPT_ARGS_COL);
 unsigned int opt_geometry_color_projection(OPT_ARGS_COL);
-unsigned int opt_mesh_color_points(OPT_ARGS_COL); 
-unsigned int opt_mesh_color_points_sup(OPT_ARGS_COL); 
-unsigned int opt_mesh_color_lines(OPT_ARGS_COL); 
+unsigned int opt_mesh_color_points(OPT_ARGS_COL);
+unsigned int opt_mesh_color_points_sup(OPT_ARGS_COL);
+unsigned int opt_mesh_color_lines(OPT_ARGS_COL);
 unsigned int opt_mesh_color_triangles(OPT_ARGS_COL);
 unsigned int opt_mesh_color_quadrangles(OPT_ARGS_COL);
 unsigned int opt_mesh_color_tetrahedra(OPT_ARGS_COL);
@@ -668,7 +674,7 @@ unsigned int opt_view_color_axes(OPT_ARGS_COL);
 // Data structures and global functions
 
 typedef struct {
-  const char *str ; 
+  const char *str ;
   int int1, int2, int3, int4 ;
 } StringX4Int;
 
@@ -705,11 +711,11 @@ void ReInitOptions(int num);
 void PrintOptions(int num, int level, int diff, int help, const char *filename);
 void PrintOptionsDoc();
 
-bool StringOption(int action, const char *category, int num, 
+bool StringOption(int action, const char *category, int num,
                   const char *name, std::string &val);
-bool NumberOption(int action, const char *category, int num, 
+bool NumberOption(int action, const char *category, int num,
                   const char *name, double &val);
-bool ColorOption(int action, const char *category, int num, 
+bool ColorOption(int action, const char *category, int num,
                  const char *name, unsigned int &val);
 
 GmshColorTable *GetColorTable(int num);
diff --git a/Fltk/onelabWindow.cpp b/Fltk/onelabWindow.cpp
index 7523fd30782bdf02cec162ad2acbfe8bb91cf44c..6af057bf358ac66c620c180ce05f0a9d1ea73ce4 100644
--- a/Fltk/onelabWindow.cpp
+++ b/Fltk/onelabWindow.cpp
@@ -533,6 +533,13 @@ static void updateOnelabGraphs()
     drawContext::global()->draw();
 }
 
+static void importPhysicalGroups(GModel *m)
+{
+  std::map<int, std::vector<GEntity*> > groups[4];
+  m->getPhysicalGroups(groups);
+
+}
+
 static void runGmshClient(const std::string &action)
 {
   if(action == "initialize") return;
@@ -557,6 +564,7 @@ static void runGmshClient(const std::string &action)
       // the model name has changed
       modelName = GModel::current()->getName();
       geometry_reload_cb(0, 0);
+      importPhysicalGroups(GModel::current());
     }
   }
   else if(action == "compute"){
@@ -567,6 +575,7 @@ static void runGmshClient(const std::string &action)
       // changed
       modelName = GModel::current()->getName();
       geometry_reload_cb(0, 0);
+      importPhysicalGroups(GModel::current());
       if(FlGui::instance()->onelab->meshAuto()){
         mesh_3d_cb(0, 0);
         CreateOutputFile(mshFileName, CTX::instance()->mesh.fileFormat);
@@ -588,9 +597,24 @@ void onelab_cb(Fl_Widget *w, void *data)
   if(!data) return;
   std::string action((const char*)data);
 
+  if(action == "refresh"){
+    static int recurse = false;
+    if(recurse) return;
+    recurse = true;
+    updateOnelabGraphs();
+    FlGui::instance()->onelab->rebuildTree();
+    recurse = false;
+    return;
+  }
+
   if(action == "stop"){
     FlGui::instance()->onelab->stop(true);
     FlGui::instance()->onelab->setButtonMode("kill");
+    for(onelab::server::citer it = onelab::server::instance()->firstClient();
+        it != onelab::server::instance()->lastClient(); it++){
+      onelab::string o(it->second->getName() + "/Action", "stop");
+      onelab::server::instance()->set(o);
+    }
     return;
   }
 
@@ -954,17 +978,20 @@ void onelabWindow::setButtonMode(const std::string &mode)
   if(mode == "compute"){
     _butt[0]->label("Compute");
     _butt[0]->callback(onelab_cb, (void*)"compute");
-    _butt[1]->activate();
+    _butt[1]->label("Check");
+    _butt[1]->callback(onelab_cb, (void*)"check");
   }
   else if(mode == "stop"){
     _butt[0]->label("Stop");
     _butt[0]->callback(onelab_cb, (void*)"stop");
-    _butt[1]->deactivate();
+    _butt[1]->label("Refresh");
+    _butt[1]->callback(onelab_cb, (void*)"refresh");
   }
   else{
     _butt[0]->label("Kill");
     _butt[0]->callback(onelab_cb, (void*)"kill");
-    _butt[1]->deactivate();
+    _butt[1]->label("Refresh");
+    _butt[1]->callback(onelab_cb, (void*)"refresh");
   }
 }