From f2dac2ad699ac7aaab717bd9d7ef35d565599e77 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Mon, 7 May 2001 06:25:26 +0000
Subject: [PATCH] Help strings for all options

---
 Common/Context.h        |   1 +
 Common/DefaultOptions.h | 788 ++++++++++++++++++++++++++--------------
 Common/GetOptions.cpp   |  20 +-
 Common/Options.cpp      |  38 +-
 Common/Options.h        |   4 +
 Fltk/GUI.cpp            |   3 +-
 Fltk/Main.cpp           |  35 +-
 doc/VERSIONS            |   7 +-
 www/gmsh.html           |   4 +-
 9 files changed, 606 insertions(+), 294 deletions(-)

diff --git a/Common/Context.h b/Common/Context.h
index f0f2d71d48..7acedc5928 100644
--- a/Common/Context.h
+++ b/Common/Context.h
@@ -49,6 +49,7 @@ public :
   int default_plugins;        // do we load default plugins on startup?
 
   int batch;                  // 0=full gfx; -1=just parse; 1,2,3=batch 1D, 2D, 3D mesh 
+  int initial_context;        // 0=automatic; 1=geom; 2=mesh; 3=solver; 4=post 
   int verbosity;              // 0=silent -> 3=debug 
   int expose;                 // 1 if everything is ready to expose and draw 
 
diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h
index d28dc1bb97..70bc565ac5 100644
--- a/Common/DefaultOptions.h
+++ b/Common/DefaultOptions.h
@@ -13,278 +13,486 @@
 // STRINGS
 
 StringXString GeneralOptions_String[] = {
-  { F, "Display" , opt_general_display , "" },
-  { 0, "SessionFileName" , opt_general_session_filename , ".gmshrc" },
-  { F|S, "DefaultFileName" , opt_general_default_filename , "unnamed.geo" },
-  { F|S, "TmpFileName" , opt_general_tmp_filename , ".gmsh-tmp" },
-  { F|S, "ErrorFileName" , opt_general_error_filename , ".gmsh-errors" },
-  { F|S, "OptionsFileName" , opt_general_options_filename , ".gmsh-options" },
+  { F, "Display" , opt_general_display , "" ,
+    "X server to use (only for Unix versions)" },
+  { 0, "SessionFileName" , opt_general_session_filename , ".gmshrc" ,
+    "File into which session specific information is saved, and which is read on startup" },
+  { F|S, "DefaultFileName" , opt_general_default_filename , "unnamed.geo" ,
+    "Default project file name" },
+  { F|S, "TmpFileName" , opt_general_tmp_filename , ".gmsh-tmp" ,
+    "Temporary file name (saved in the 'home' directory)" },
+  { F|S, "ErrorFileName" , opt_general_error_filename , ".gmsh-errors" ,
+    "File into which the log is saved if a fatal error occurs" },
+  { F|S, "OptionsFileName" , opt_general_options_filename , ".gmsh-options" ,
+    "Option file created in the 'home' directory with the 'File->Save Options' menu, and which is read on startup" },
 #ifdef WIN32
-  { F|O, "TextEditor" , opt_general_editor , "notepad %s" },
+  { F|O, "TextEditor" , opt_general_editor , "notepad %s" , 
 #else
-  { F|O, "TextEditor" , opt_general_editor , "emacs %s &" },
+  { F|O, "TextEditor" , opt_general_editor , "emacs %s &" ,
 #endif
-  { 0, NULL , NULL , NULL }
+    "System command to launch a text editor (may contain '\%s')" },
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 StringXString GeometryOptions_String[] = {
-  { 0, NULL , NULL , NULL }
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 StringXString MeshOptions_String[] = {
-  { 0, NULL , NULL , NULL }
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 StringXString SolverOptions_String[] = {
-  { F|O, "GetDPCommand" , opt_solver_getdp_command , "getdp" },
-  { 0, NULL , NULL , NULL }
+  { F|O, "GetDPCommand" , opt_solver_getdp_command , "getdp" , 
+    "System command to launch the GetDP solver (should _not_ contain the '&' character)" },
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 StringXString PostProcessingOptions_String[] = {
-  { 0, NULL , NULL , NULL }
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 StringXString ViewOptions_String[] = {
-  { F, "Name" , opt_view_name , "" },
-  { F|O, "Format" , opt_view_format , "%.3e" },
-  { F, "FileName" , opt_view_filename , "" },
-  { 0, NULL , NULL , NULL }
+  { F, "Name" , opt_view_name , "" , 
+    "Default name to assign to the post-processing view" },
+  { F|O, "Format" , opt_view_format , "%.3e" , 
+    "Number format (in standard C form)" },
+  { F, "FileName" , opt_view_filename , "" , 
+    "Default file name to assign to the post-processing view" },
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 StringXString PrintOptions_String[] = {
-  { F|O, "Font" , opt_print_font , "Courier" },
-  { 0, NULL , NULL , NULL }
+  { F|O, "Font" , opt_print_font , "Courier" , 
+    "Font used for postscript printing" },
+  { 0, NULL , NULL , NULL , NULL }
 } ;
 
 // NUMBERS
 
 StringXNumber GeneralOptions_Number[] = {
-  { F|S, "SaveSession" , opt_general_session_save, 1. }, 
-  { F|S, "SaveOptions" , opt_general_options_save, 0. }, 
-  { F|S, "FontSize" , opt_general_fontsize , 12. }, 
-  { F|S, "GraphicsFontSize" , opt_general_graphics_fontsize , 11. }, 
-  { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 20. }, 
-  { F|S, "GraphicsPositionY" , opt_general_graphics_position1 , 30. }, 
-  { F|S, "GraphicsWidth" , opt_general_viewport2 , 700. }, 
-  { F|S, "GraphicsHeight" , opt_general_viewport3 , 500. }, 
-  { F|S, "MenuPositionX" , opt_general_menu_position0 , 800. }, 
-  { F|S, "MenuPositionY" , opt_general_menu_position1 , 50. }, 
-  { F|S, "MessagePositionX" , opt_general_message_position0 , 650. }, 
-  { F|S, "MessagePositionY" , opt_general_message_position1 , 150. }, 
-  { F|S, "MessageWidth" , opt_general_message_size0 , 450. }, 
-  { F|S, "MessageHeight" , opt_general_message_size1 , 350. }, 
-  { F|O, "CenterWindows" , opt_general_center_windows , 1. }, 
-  { F, "RotationX" , opt_general_rotation0 , 0.0 }, 
-  { F, "RotationY" , opt_general_rotation1 , 0.0 }, 
-  { F, "RotationZ" , opt_general_rotation2 , 0.0 }, 
-  { F, "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 }, 
-  { F, "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 }, 
-  { F, "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 }, 
-  { F, "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 }, 
-  { F, "TranslationX" , opt_general_translation0 , 0.0 }, 
-  { F, "TranslationY" , opt_general_translation1 , 0.0 }, 
-  { F, "TranslationZ" , opt_general_translation2 , 0.0 }, 
-  { F, "ScaleX" , opt_general_scale0 , 1.0 }, 
-  { F, "ScaleY" , opt_general_scale1 , 1.0 }, 
-  { F, "ScaleZ" , opt_general_scale2 , 1.0 }, 
-  { F|O, "Shininess" , opt_general_shine , 0.4 }, 
-  { F|O, "ColorScheme", opt_general_color_scheme , 0. }, 
+  { F|O, "InitialModule", opt_general_initial_context, 0. , 
+    "Module launched on startup (0=automatic, 1=geometry, 2=mesh, 3=solver, 4=post-processing) " },
+  { F|S, "SaveSession" , opt_general_session_save, 1. , 
+    "Automatically save session specific information each time you quit Gmsh?" }, 
+  { F|S, "SaveOptions" , opt_general_options_save, 0. , 
+    "Automatically save all current options each time you quit Gmsh?" }, 
+  { F|S, "FontSize" , opt_general_fontsize , 12. , 
+    "Size of the font in the graphical user interface" }, 
+  { F|S, "GraphicsFontSize" , opt_general_graphics_fontsize , 11. , 
+    "Size of the font in the graphic window" }, 
+  { F|S, "GraphicsPositionX" , opt_general_graphics_position0 , 20. , 
+    "Horizontal position (in pixels) of the upper left corner of the graphic window" }, 
+  { F|S, "GraphicsPositionY" , opt_general_graphics_position1 , 30. ,
+    "Vertical position (in pixels) of the upper left corner of the graphic window" }, 
+  { F|S, "GraphicsWidth" , opt_general_viewport2 , 700. , 
+    "Width (in pixels) of the graphic window" }, 
+  { F|S, "GraphicsHeight" , opt_general_viewport3 , 500. , 
+    "Height (in pixels) of the graphic window" }, 
+  { 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, "MessagePositionX" , opt_general_message_position0 , 650. , 
+    "Horizontal position (in pixels) of the upper left corner of the message window" }, 
+  { F|S, "MessagePositionY" , opt_general_message_position1 , 150. , 
+    "Vertical position (in pixels) of the upper left corner of the message window" }, 
+  { F|S, "MessageWidth" , opt_general_message_size0 , 450. , 
+    "Width (in pixels) of the message window" }, 
+  { F|S, "MessageHeight" , opt_general_message_size1 , 350. , 
+    "Height (in pixels) of the message window" }, 
+  { F|O, "CenterWindows" , opt_general_center_windows , 1. , 
+    "Center new windows on the menu window" }, 
+  { 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, "TrackballQuaternion0" , opt_general_quaternion0 , 0.0 , 
+    "First trackball quaternion component (used if Trackball == 1)" }, 
+  { F, "TrackballQuaternion1" , opt_general_quaternion1 , 0.0 , 
+    "Second trackball quaternion component (used if Trackball == 1)" }, 
+  { F, "TrackballQuaternion2" , opt_general_quaternion2 , 0.0 , 
+    "Third trackball quaternion component (used if Trackball == 1)" }, 
+  { F, "TrackballQuaternion3" , opt_general_quaternion3 , 1.0 , 
+    "Fourth trackball quaternion component (used if Trackball == 1)" }, 
+  { F, "TranslationX" , opt_general_translation0 , 0.0 , 
+    "X-axis translation (in model units)" },
+  { F, "TranslationY" , opt_general_translation1 , 0.0 , 
+    "Y-axis translation (in model units)" },
+  { F, "TranslationZ" , opt_general_translation2 , 0.0 , 
+    "Z-axis translation (in model units)" },
+  { F, "ScaleX" , opt_general_scale0 , 1.0 , 
+    "X-axis scale factor" },
+  { F, "ScaleY" , opt_general_scale1 , 1.0 , 
+    "Y-axis scale factor" },
+  { F, "ScaleZ" , opt_general_scale2 , 1.0 , 
+    "Z-axis scale factor" },
+  { F|O, "Shininess" , opt_general_shine , 0.4 , 
+    "Material shininess (must be > 0)" },
+  { F|O, "ColorScheme", opt_general_color_scheme , 0. ,
+    "Default color scheme (0, 1 or 2)" },
 #ifdef _BLACKBOX
-  { F|O, "Verbosity" , opt_general_verbosity , 0. },
+  { F|O, "Verbosity" , opt_general_verbosity , 0. , 
 #else
-  { F|O, "Verbosity" , opt_general_verbosity , 2. },
+  { F|O, "Verbosity" , opt_general_verbosity , 2. ,
 #endif
+    "Level of information printed during processing (0=no information)" },
 #ifdef _FLTK
-  { F|O, "Terminal" , opt_general_terminal , 0. },
+  { F|O, "Terminal" , opt_general_terminal , 0. ,
 #else		      
-  { F|O, "Terminal" , opt_general_terminal , 1. },
+  { F|O, "Terminal" , opt_general_terminal , 1. ,
 #endif
-  { F|O, "Orthographic" , opt_general_orthographic , 1. }, 
-  { F|O, "FastRedraw" , opt_general_fast_redraw , 1. },
-  { F|O, "Axes" , opt_general_axes , 1. },
-  { F|O, "SmallAxes" , opt_general_small_axes , 1. },
-  { F|O, "DoubleBuffer" , opt_general_double_buffer , 1. },
-  { F|O, "DisplayLists" , opt_general_display_lists , 0. },
-  { F|O, "AlphaBlending" , opt_general_alpha_blending , 0. },
-  { F|O, "Trackball" , opt_general_trackball , 1. },
-  { F|O, "ZoomFactor" , opt_general_zoom_factor , 1.1 }, 
-  { F|O, "DefaultPlugins" , opt_general_default_plugins , 0. }, 
-  { F, "Clip0" , opt_general_clip0 , 0. },
-  { F, "Clip0A" , opt_general_clip0a , 0.0 }, 
-  { F, "Clip0B" , opt_general_clip0b , 0.0 }, 
-  { F, "Clip0C" , opt_general_clip0c , 0.0 }, 
-  { F, "Clip0D" , opt_general_clip0d , 0.0 }, 
-  { F, "Clip1" , opt_general_clip1 , 0. },
-  { F, "Clip1A" , opt_general_clip1a , 0.0 }, 
-  { F, "Clip1B" , opt_general_clip1b , 0.0 }, 
-  { F, "Clip1C" , opt_general_clip1c , 0.0 }, 
-  { F, "Clip1D" , opt_general_clip1d , 0.0 }, 
-  { F, "Clip2" , opt_general_clip2 , 0. },
-  { F, "Clip2A" , opt_general_clip2a , 0.0 }, 
-  { F, "Clip2B" , opt_general_clip2b , 0.0 }, 
-  { F, "Clip2C" , opt_general_clip2c , 0.0 }, 
-  { F, "Clip2D" , opt_general_clip2d , 0.0 }, 
-  { F, "Clip3" , opt_general_clip3 , 0. },
-  { F, "Clip3A" , opt_general_clip3a , 0.0 }, 
-  { F, "Clip3B" , opt_general_clip3b , 0.0 }, 
-  { F, "Clip3C" , opt_general_clip3c , 0.0 }, 
-  { F, "Clip3D" , opt_general_clip3d , 0.0 }, 
-  { F, "Clip4" , opt_general_clip4 , 0. },
-  { F, "Clip4A" , opt_general_clip4a , 0.0 }, 
-  { F, "Clip4B" , opt_general_clip4b , 0.0 }, 
-  { F, "Clip4C" , opt_general_clip4c , 0.0 }, 
-  { F, "Clip4D" , opt_general_clip4d , 0.0 }, 
-  { F, "Clip5" , opt_general_clip5 , 0. },
-  { F, "Clip5A" , opt_general_clip5a , 0.0 }, 
-  { F, "Clip5B" , opt_general_clip5b , 0.0 }, 
-  { F, "Clip5C" , opt_general_clip5c , 0.0 }, 
-  { F, "Clip5D" , opt_general_clip5d , 0.0 }, 
-  { F|O, "MovingLight" , opt_general_moving_light , 0. },
-  { F|O, "Light0" , opt_general_light0 , 1. },
-  { F|O, "Light0X" , opt_general_light00 , 0.5 }, 
-  { F|O, "Light0Y" , opt_general_light01 , 0.3 }, 
-  { F|O, "Light0Z" , opt_general_light02 , 1.0 }, 
-  { F|O, "Light1" , opt_general_light1 , 0. },
-  { F|O, "Light1X" , opt_general_light10 , 0.5 }, 
-  { F|O, "Light1Y" , opt_general_light11 , 0.3 }, 
-  { F|O, "Light1Z" , opt_general_light12 , 1.0 }, 
-  { F|O, "Light2" , opt_general_light2 , 0. },
-  { F|O, "Light2X" , opt_general_light20 , 0.5 }, 
-  { F|O, "Light2Y" , opt_general_light21 , 0.3 }, 
-  { F|O, "Light2Z" , opt_general_light22 , 1.0 }, 
-  { F|O, "Light3" , opt_general_light3 , 0. },
-  { F|O, "Light3X" , opt_general_light30 , 0.5 }, 
-  { F|O, "Light3Y" , opt_general_light31 , 0.3 }, 
-  { F|O, "Light3Z" , opt_general_light32 , 1.0 }, 
-  { F|O, "Light4" , opt_general_light4 , 0. },
-  { F|O, "Light4X" , opt_general_light40 , 0.5 }, 
-  { F|O, "Light4Y" , opt_general_light41 , 0.3 }, 
-  { F|O, "Light4Z" , opt_general_light42 , 1.0 }, 
-  { F|O, "Light5" , opt_general_light5 , 0. },
-  { F|O, "Light5X" , opt_general_light50 , 0.5 }, 
-  { F|O, "Light5Y" , opt_general_light51 , 0.3 }, 
-  { F|O, "Light5Z" , opt_general_light52 , 1.0 }, 
-  { 0, NULL , NULL , 0. }
+    "Should information be printed on the terminal (if available)?" },
+  { F|O, "Orthographic" , opt_general_orthographic , 1. ,
+    "Orthographic projection mode (0=perspective projection)" },
+  { F|O, "FastRedraw" , opt_general_fast_redraw , 1. ,
+    "Fast redraw (no mesh or view display) when moving the model" },
+  { F|O, "Axes" , opt_general_axes , 1. ,
+    "Display the axes linked to the model" },
+  { F|O, "SmallAxes" , opt_general_small_axes , 1. ,
+    "Display the small axes" },
+  { F|O, "DoubleBuffer" , opt_general_double_buffer , 1. ,
+    "Use a double buffered graphic window (on Unix, should be set to 0 when working on a remote host without GLX)" },
+  { F|O, "DisplayLists" , opt_general_display_lists , 0. ,
+    "Use OpenGL display lists (useful with real time manipulation of 'big' post-processing views)" },
+  { F|O, "AlphaBlending" , opt_general_alpha_blending , 0. ,
+    "Enable alpha blending (transparency) in post-processing views" },
+  { F|O, "Trackball" , opt_general_trackball , 1. ,
+    "Use trackball rotation mode" },
+  { F|O, "ZoomFactor" , opt_general_zoom_factor , 1.1 ,
+    "'Speed' of the middle mouse button zoom" },
+  { F|O, "DefaultPlugins" , opt_general_default_plugins , 0. ,
+    "Load default plugins on startup" },
+  { F, "Clip0" , opt_general_clip0 , 0. ,
+    "Enable clip plane 0" },
+  { F, "Clip0A" , opt_general_clip0a , 0.0 ,
+    "First clip plane 0 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip0B" , opt_general_clip0b , 0.0 , 
+    "Second clip plane 0 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip0C" , opt_general_clip0c , 0.0 , 
+    "Third clip plane 0 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip0D" , opt_general_clip0d , 0.0 , 
+    "Fourth clip plane 0 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip1" , opt_general_clip1 , 0.,
+    "Enable clip plane 1" },
+  { F, "Clip1A" , opt_general_clip1a , 0.0 , 
+    "First clip plane 1 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip1B" , opt_general_clip1b , 0.0 , 
+    "Second clip plane 1 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip1C" , opt_general_clip1c , 0.0 , 
+    "Third clip plane 1 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip1D" , opt_general_clip1d , 0.0 , 
+    "Fourth clip plane 1 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip2" , opt_general_clip2 , 0.,
+    "Enable clip plane 2" },
+  { F, "Clip2A" , opt_general_clip2a , 0.0 , 
+    "First clip plane 2 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip2B" , opt_general_clip2b , 0.0 , 
+    "Second clip plane 2 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip2C" , opt_general_clip2c , 0.0 , 
+    "Third clip plane 2 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip2D" , opt_general_clip2d , 0.0 , 
+    "Fourth clip plane 2 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip3" , opt_general_clip3 , 0.,
+    "Enable clip plane 3" },
+  { F, "Clip3A" , opt_general_clip3a , 0.0 , 
+    "First clip plane 3 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip3B" , opt_general_clip3b , 0.0 , 
+    "Second clip plane 3 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip3C" , opt_general_clip3c , 0.0 , 
+    "Third clip plane 3 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip3D" , opt_general_clip3d , 0.0 , 
+    "Fourth clip plane 3 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip4" , opt_general_clip4 , 0.,
+    "Enable clip plane 4" },
+  { F, "Clip4A" , opt_general_clip4a , 0.0 , 
+    "First clip plane 4 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip4B" , opt_general_clip4b , 0.0 , 
+    "Second clip plane 4 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip4C" , opt_general_clip4c , 0.0 , 
+    "Third clip plane 4 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip4D" , opt_general_clip4d , 0.0 , 
+    "Fourth clip plane 4 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip5" , opt_general_clip5 , 0.,
+    "Enable clip plane 5" },
+  { F, "Clip5A" , opt_general_clip5a , 0.0 , 
+    "First clip plane 5 equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip5B" , opt_general_clip5b , 0.0 , 
+    "Second clip plane 5 equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip5C" , opt_general_clip5c , 0.0 , 
+    "Third clip plane 5 equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "Clip5D" , opt_general_clip5d , 0.0 , 
+    "Fourth clip plane 5 equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { F|O, "MovingLight" , opt_general_moving_light , 0. ,
+    "Use a moving (i.e. which follows the model) light source" },
+  { F|O, "Light0" , opt_general_light0 , 1. ,
+    "Enable light source 0" },
+  { F|O, "Light0X" , opt_general_light00 , 0.5 ,
+    "X position of light source 0" },
+  { F|O, "Light0Y" , opt_general_light01 , 0.3 , 
+    "Y position of light source 0" },
+  { F|O, "Light0Z" , opt_general_light02 , 1.0 , 
+    "Z position of light source 0" },
+  { F|O, "Light1" , opt_general_light1 , 0.,
+    "Enable light source 1" },
+  { F|O, "Light1X" , opt_general_light10 , 0.5 , 
+    "X position of light source 1" },
+  { F|O, "Light1Y" , opt_general_light11 , 0.3 , 
+    "Y position of light source 1" },
+  { F|O, "Light1Z" , opt_general_light12 , 1.0 , 
+    "Z position of light source 1" },
+  { F|O, "Light2" , opt_general_light2 , 0.,
+    "Enable light source 2" },
+  { F|O, "Light2X" , opt_general_light20 , 0.5 , 
+    "X position of light source 2" },
+  { F|O, "Light2Y" , opt_general_light21 , 0.3 , 
+    "Y position of light source 2" },
+  { F|O, "Light2Z" , opt_general_light22 , 1.0 , 
+    "Z position of light source 2" },
+  { F|O, "Light3" , opt_general_light3 , 0.,
+    "Enable light source 3" },
+  { F|O, "Light3X" , opt_general_light30 , 0.5 , 
+    "X position of light source 3" },
+  { F|O, "Light3Y" , opt_general_light31 , 0.3 , 
+    "Y position of light source 3" },
+  { F|O, "Light3Z" , opt_general_light32 , 1.0 , 
+    "Z position of light source 3" },
+  { F|O, "Light4" , opt_general_light4 , 0.,
+    "Enable light source 4" },
+  { F|O, "Light4X" , opt_general_light40 , 0.5 , 
+    "X position of light source 4" },
+  { F|O, "Light4Y" , opt_general_light41 , 0.3 , 
+    "Y position of light source 4" },
+  { F|O, "Light4Z" , opt_general_light42 , 1.0 , 
+    "Z position of light source 4" },
+  { F|O, "Light5" , opt_general_light5 , 0.,
+    "Enable light source 5" },
+  { F|O, "Light5X" , opt_general_light50 , 0.5 , 
+    "X position of light source 5" },
+  { F|O, "Light5Y" , opt_general_light51 , 0.3 , 
+    "Y position of light source 5" },
+  { F|O, "Light5Z" , opt_general_light52 , 1.0 , 
+    "Z position of light source 5" },
+  { 0, NULL , NULL , 0. , NULL }
 } ;
 
 StringXNumber GeometryOptions_Number[] = {
-  { F|O, "Normals" , opt_geometry_normals , 0. }, 
-  { F|O, "Tangents" , opt_geometry_tangents , 0. }, 
-  { F|O, "Points" , opt_geometry_points , 1. }, 
-  { F|O, "Lines" , opt_geometry_lines , 1. }, 
-  { F|O, "Surfaces" , opt_geometry_surfaces , 0. }, 
-  { F|O, "Volumes" , opt_geometry_volumes , 0. }, 
-  { F|O, "PointsNumbers" , opt_geometry_points_num , 0. }, 
-  { F|O, "LinesNumbers" , opt_geometry_lines_num , 0. }, 
-  { F|O, "SurfacesNumbers" , opt_geometry_surfaces_num , 0. }, 
-  { F|O, "VolumesNumbers" , opt_geometry_volumes_num , 0. }, 
-  { F|O, "Aspect" , opt_geometry_aspect , 0. }, 
-  { F|O, "Highlight" , opt_geometry_highlight , 1. }, 
-  { F|O, "OldCircle" , opt_geometry_old_circle , 0. }, 
-  { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 }, 
-  { F|O, "ColorScheme" , opt_geometry_color_scheme , 0. }, 
-  { 0, NULL , NULL , 0. }
+  { F|O, "Normals" , opt_geometry_normals , 0. , 
+    "Size of the vectors normal to the surfaces" }, 
+  { F|O, "Tangents" , opt_geometry_tangents , 0. ,
+    "Size of the vectors tangent to the curves" }, 
+  { F|O, "Points" , opt_geometry_points , 1. ,
+    "Display geometry points?" },
+  { F|O, "Lines" , opt_geometry_lines , 1. , 
+    "Display geometry curves?" },
+  { F|O, "Surfaces" , opt_geometry_surfaces , 0. , 
+    "Display geometry surfaces?" },
+  { F|O, "Volumes" , opt_geometry_volumes , 0. , 
+    "Display geometry volumes? (not implemented yet)" },
+  { F|O, "PointsNumbers" , opt_geometry_points_num , 0. , 
+    "Display points numbers?" },
+  { F|O, "LinesNumbers" , opt_geometry_lines_num , 0. , 
+    "Display curve numbers?" },
+  { F|O, "SurfacesNumbers" , opt_geometry_surfaces_num , 0. , 
+    "Display surface numbers?" },
+  { F|O, "VolumesNumbers" , opt_geometry_volumes_num , 0. , 
+    "Display volume numbers? (not implemented yet)" },
+  { F|O, "Aspect" , opt_geometry_aspect , 0. , 
+    "Not used" },
+  { F|O, "Highlight" , opt_geometry_highlight , 1. , 
+    "Not used" },
+  { F|O, "OldCircle" , opt_geometry_old_circle , 0. , 
+    "Use old circle description (compatibility option for old Gmsh geometries)" },
+  { F|O, "ScalingFactor" , opt_geometry_scaling_factor , 1.0 , 
+    "Global geometry scaling factor" },
+  { F|O, "ColorScheme" , opt_geometry_color_scheme , 0. , 
+    "Default geometry color scheme (0, 1 or 2)" },
+  { 0, NULL , NULL , 0. , NULL }
 } ;
 
 StringXNumber MeshOptions_Number[] = {
-  { F|O, "Quality" , opt_mesh_quality , 0.0 }, 
-  { F|O, "Normals" , opt_mesh_normals , 0.0 }, 
-  { F|O, "Tangents" , opt_mesh_tangents , 0.0 }, 
-  { F|O, "Explode" , opt_mesh_explode , 1.0 }, 
-  { F|O, "ScalingFactor" , opt_mesh_scaling_factor , 1.0 }, 
-  { F|O, "CharacteristicLengthFactor" , opt_mesh_lc_factor , 1.0 }, 
-  { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-4 }, 
-  { F|O, "GammaLimit" , opt_mesh_limit_gamma , 0.0 }, 
-  { F|O, "EtaLimit" , opt_mesh_limit_eta , 0.0 }, 
-  { F|O, "RhoLimit" , opt_mesh_limit_rho , 0.0 }, 
-  { F|O, "Points" , opt_mesh_points , 1. }, 
-  { F|O, "Lines" , opt_mesh_lines , 1. }, 
-  { F|O, "Surfaces" , opt_mesh_surfaces , 1. }, 
-  { F|O, "Volumes" , opt_mesh_volumes , 1. }, 
-  { F|O, "PointsNumbers" , opt_mesh_points_num , 0. }, 
-  { F|O, "LinesNumbers" , opt_mesh_lines_num , 0. }, 
-  { F|O, "SurfacesNumbers" , opt_mesh_surfaces_num , 0. }, 
-  { F|O, "VolumesNumbers" , opt_mesh_volumes_num , 0. }, 
-  { F|O, "Aspect" , opt_mesh_aspect , 0. }, 
-  { F|O, "Format" , opt_mesh_format , FORMAT_MSH }, 
-  { F|O, "Smoothing" , opt_mesh_nb_smoothing , 0. }, 
-  { F|O, "Algorithm" , opt_mesh_algo , DELAUNAY_OLDALGO }, 
-  { F|O, "PointInsertion" , opt_mesh_point_insertion, CENTER_CIRCCIRC }, 
-  { F|O, "SpeedMax" , opt_mesh_speed_max , 0. }, 
-  { F|O, "MinimumCirclePoints" , opt_mesh_min_circ_points, 7. }, 
-  { F|O, "Degree" , opt_mesh_degree , 1. }, 
-  { F|O, "Dual" , opt_mesh_dual , 0. }, 
-  { F|O, "Interactive" , opt_mesh_interactive , 0. }, 
-  { F|O, "ColorScheme" , opt_mesh_color_scheme , 0. }, 
-  { F|O, "ColorCarousel" , opt_mesh_color_carousel , 1. }, 
-  { F, "use_cut_plane" , opt_mesh_use_cut_plane , 0  }, 
-  { F, "cut_planea" , opt_mesh_cut_planea , 1. }, 
-  { F, "cut_planeb" , opt_mesh_cut_planeb , 0. }, 
-  { F, "cut_planec" , opt_mesh_cut_planec , 0. }, 
-  { F, "cut_planed" , opt_mesh_cut_planed , 0. }, 
-  { 0, NULL , NULL , 0. }
+  { F|O, "Quality" , opt_mesh_quality , 0.0 ,
+    "Only diplay elements of quality inferior to this factor" },
+  { F|O, "Normals" , opt_mesh_normals , 0.0 ,
+    "Size of the normal vectors" }, 
+  { F|O, "Tangents" , opt_mesh_tangents , 0.0 , 
+    "Size of the tangent vectors" }, 
+  { F|O, "Explode" , opt_mesh_explode , 1.0 ,
+    "Display mesh with non adjacent elements (factor between 0 and 1)" },
+  { F|O, "ScalingFactor" , opt_mesh_scaling_factor , 1.0 ,
+    "Global scaling factor applied to the saved mesh" },
+  { F|O, "CharacteristicLengthFactor" , opt_mesh_lc_factor , 1.0 ,
+    "Factor applied to all charcteristic lenghts (and background meshes)" },
+  { F|O, "RandomFactor" , opt_mesh_rand_factor , 1.e-4 ,
+    "Random factor used in 2D and 3D meshing algorithm (test other values when the algorithm fails)" },
+  { F|O, "GammaLimit" , opt_mesh_limit_gamma , 0.0 , 
+    "Target quality for tetrahedral elements (not fully functional)" },
+  { F|O, "EtaLimit" , opt_mesh_limit_eta , 0.0 , 
+    "Target quality for tetrahedral elements (not fully functional)" },
+  { F|O, "RhoLimit" , opt_mesh_limit_rho , 0.0 , 
+    "Target quality for tetrahedral elements (not fully functional)" },
+  { F|O, "Points" , opt_mesh_points , 1. , 
+    "Display mesh vertices?" },
+  { F|O, "Lines" , opt_mesh_lines , 1. , 
+    "Display mesh vertices on curves?" },
+  { F|O, "Surfaces" , opt_mesh_surfaces , 1. , 
+    "Display surface mesh?" },
+  { F|O, "Volumes" , opt_mesh_volumes , 1. , 
+    "Display volume mesh?" },
+  { F|O, "PointsNumbers" , opt_mesh_points_num , 0. , 
+    "Display mesh vertices numbers?" },
+  { F|O, "LinesNumbers" , opt_mesh_lines_num , 0. , 
+    "Display mesh line numbers?" },
+  { F|O, "SurfacesNumbers" , opt_mesh_surfaces_num , 0. , 
+    "Display mesh surface numbers?" },
+  { F|O, "VolumesNumbers" , opt_mesh_volumes_num , 0. , 
+    "Display mesh elements numbers?" },
+  { F|O, "Aspect" , opt_mesh_aspect , 0. , 
+    "Mesh apsect (0=wireframe, 1=hidden lines, 2=solid)" },
+  { F|O, "Format" , opt_mesh_format , FORMAT_MSH , 
+    "Mesh output format (1=MSH, 2=UNV)" },
+  { F|O, "Smoothing" , opt_mesh_nb_smoothing , 0. ,
+    "Number of smoothing steps applied to the final mesh" },
+  { F|O, "Algorithm" , opt_mesh_algo , DELAUNAY_OLDALGO ,
+    "2D mesh algorithm (1=isotropic, 2=anisotropic)" }, 
+  { F|O, "PointInsertion" , opt_mesh_point_insertion, CENTER_CIRCCIRC ,
+    "Point insertion method for isotropic 2D algorithm (1=center of circ. circle, 2=voronoi, 3=cog)" },
+  { F|O, "SpeedMax" , opt_mesh_speed_max , 0. ,
+    "Disable dubious point insertion tests" },
+  { F|O, "MinimumCirclePoints" , opt_mesh_min_circ_points, 7. ,
+    "Minimum number of points used to mesh a circle" },
+  { F|O, "Degree" , opt_mesh_degree , 1. ,
+    "Element order" },
+  { F|O, "Dual" , opt_mesh_dual , 0. ,
+    "Display the dual mesh obtained by barycentric subdivision" },
+  { F|O, "Interactive" , opt_mesh_interactive , 0. ,
+    "Show the construction of the 2D mesh in real time (only with the anisotropic algorithm)" },
+  { F|O, "ColorScheme" , opt_mesh_color_scheme , 0. , 
+    "Default mesh color scheme (0, 1 or 2)" },
+  { F|O, "ColorCarousel" , opt_mesh_color_carousel , 1. ,
+    "Use a 'color by region number' scheme" },
+  { F, "use_cut_plane" , opt_mesh_use_cut_plane , 0 ,
+    "Enable mesh clip plane" },
+  { F, "cut_planea" , opt_mesh_cut_planea , 1. , 
+    "First clip plane equation coefficient ('A' in equation 'AX+BY+CZ+D=0')" },
+  { F, "cut_planeb" , opt_mesh_cut_planeb , 0. , 
+    "Second clip plane equation coefficient ('B' in equation 'AX+BY+CZ+D=0')" },
+  { F, "cut_planec" , opt_mesh_cut_planec , 0. , 
+    "Third clip plane equation coefficient ('C' in equation 'AX+BY+CZ+D=0')" },
+  { F, "cut_planed" , opt_mesh_cut_planed , 0. , 
+    "Fourth clip plane equation coefficient ('D' in equation 'AX+BY+CZ+D=0')" },
+  { 0, NULL , NULL , 0. , NULL }
 } ;
 
 StringXNumber SolverOptions_Number[] = {
-  { F|O, "GetDPPopupMessages" , opt_solver_getdp_popupmessages , 1.0 }, 
-  { F|O, "GetDPMergeViews" , opt_solver_getdp_mergeviews , 1.0 }, 
-  { 0, NULL , NULL , 0. }
+  { F|O, "GetDPPopupMessages" , opt_solver_getdp_popupmessages , 1.0 ,
+    "Automatically display GetDP messages" },
+  { F|O, "GetDPMergeViews" , opt_solver_getdp_mergeviews , 1.0 , 
+    "Automatically merge any post-processing view created by GetDP" },
+  { 0, NULL , NULL , 0. , NULL }
 } ;
 
 StringXNumber PostProcessingOptions_Number[] = {
-  { F|O, "Scales" , opt_post_scales , 1. }, 
-  { F|O, "Link" , opt_post_link , 0. }, 
-  { F|O, "Smoothing" , opt_post_smooth , 0. }, 
-  { F|O, "AnimationDelay" , opt_post_anim_delay , 0.25 }, 
-  { F, "NbViews" , opt_post_nb_views , 0. }, 
+  { F|O, "Scales" , opt_post_scales , 1. , 
+    "Show value scales" },
+  { F|O, "Link" , opt_post_link , 0. ,
+    "Link post-processing views (0=no, 1=visible views, 2=all views)" },
+  { F|O, "Smoothing" , opt_post_smooth , 0. ,
+    "Apply (non-reversible) smoothing to post-processing view when merged" },
+  { F|O, "AnimationDelay" , opt_post_anim_delay , 0.25 ,
+    "Delay (in seconds) between to animation frames" },
+  { F, "NbViews" , opt_post_nb_views , 0. ,
+    "Current number of views merged (do _not_ change this!)" },
   { 0, NULL , NULL , 0. }
 } ;
 
 StringXNumber ViewOptions_Number[] = {
-  { F, "NbTimeStep" , opt_view_nb_timestep , 1. }, 
-  { F, "TimeStep" , opt_view_timestep , 0. }, 
-  { F, "Min" , opt_view_min , 1.e200 }, 
-  { F, "Max" , opt_view_max , -1.e200 }, 
-  { F, "CustomMin" , opt_view_custom_min , 0. }, 
-  { F, "CustomMax" , opt_view_custom_max , 0. }, 
-  { F, "OffsetX" , opt_view_offset0 , 0. }, 
-  { F, "OffsetY" , opt_view_offset1 , 0. }, 
-  { F, "OffsetZ" , opt_view_offset2 , 0. }, 
-  { F, "RaiseX" , opt_view_raise0 , 0. }, 
-  { F, "RaiseY" , opt_view_raise1 , 0. }, 
-  { F, "RaiseZ" , opt_view_raise2 , 0. }, 
-  { F|O, "ArrowScale" , opt_view_arrow_scale , 50. }, 
-  { F, "Visible" , opt_view_visible , 1. }, 
-  { F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO }, 
-  { F|O, "NbIso" , opt_view_nb_iso , 15. }, 
-  { F|O, "Light" , opt_view_light , 0. }, 
-  { F|O, "ShowElement" , opt_view_show_element , 0. }, 
-  { F|O, "ShowTime" , opt_view_show_time , 1. }, 
-  { F|O, "ShowScale" , opt_view_show_scale , 1. }, 
-  { F|O, "DrawPoints" , opt_view_draw_points , 1. }, 
-  { F|O, "DrawLines" , opt_view_draw_lines , 1. }, 
-  { F|O, "DrawTriangles" , opt_view_draw_triangles , 1. }, 
-  { F|O, "DrawTetrahedra" , opt_view_draw_tetrahedra , 1. }, 
-  { F|O, "DrawScalars" , opt_view_draw_scalars , 1. }, 
-  { F|O, "DrawVectors" , opt_view_draw_vectors , 1. }, 
-  { F|O, "DrawTensors" , opt_view_draw_tensors , 1. }, 
-  { F|O, "TransparentScale" , opt_view_transparent_scale , 1. }, 
-  { F|O, "ScaleType" , opt_view_scale_type , DRAW_POST_LINEAR }, 
-  { F|O, "RangeType" , opt_view_range_type , DRAW_POST_DEFAULT }, 
-  { F|O, "ArrowType" , opt_view_arrow_type , DRAW_POST_ARROW }, 
-  { F|O, "ArrowLocation" , opt_view_arrow_location , DRAW_POST_LOCATE_COG }, 
-  { 0, NULL , NULL , 0. }
+  { F, "NbTimeStep" , opt_view_nb_timestep , 1. ,
+    "Number of time steps in the view (do _not_ change this!)" },
+  { F, "TimeStep" , opt_view_timestep , 0. ,
+    "Current time step displayed" },
+  { F, "Min" , opt_view_min , 1.e200 ,
+    "Minimum value in the view (do _not_ change this!)" },
+  { F, "Max" , opt_view_max , -1.e200 , 
+    "Maximum value in the view (do _not_ change this!)" },
+  { F, "CustomMin" , opt_view_custom_min , 0. , 
+    "User defined minimum value to be displayed" },
+  { F, "CustomMax" , opt_view_custom_max , 0. , 
+    "User defined maximum value to be displayed" },
+  { F, "OffsetX" , opt_view_offset0 , 0. , 
+    "Translation of the view along X-axis (in model coordinates)" },
+  { F, "OffsetY" , opt_view_offset1 , 0. , 
+    "Translation of the view along Y-axis (in model coordinates)" },
+  { F, "OffsetZ" , opt_view_offset2 , 0. , 
+    "Translation of the view along Z-axis (in model coordinates)" },
+  { F, "RaiseX" , opt_view_raise0 , 0. , 
+    "Elevation of the view along X-axis (in model coordinates)" },
+  { F, "RaiseY" , opt_view_raise1 , 0. , 
+    "Elevation of the view along Y-axis (in model coordinates)" },
+  { F, "RaiseZ" , opt_view_raise2 , 0. , 
+    "Elevation of the view along Z-axis (in model coordinates)" },
+  { F|O, "ArrowScale" , opt_view_arrow_scale , 50. ,
+    "Size of the vector (e.g. arrow size in pixels)" },
+  { F, "Visible" , opt_view_visible , 1. ,
+    "Is the view visible?" },
+  { F|O, "IntervalsType" , opt_view_intervals_type , DRAW_POST_ISO ,
+    "Type of interval display (1=iso, 2=discrete, 3=continuous, 4=numeric)" },
+  { F|O, "NbIso" , opt_view_nb_iso , 15. ,
+    "Number of intervals" },
+  { F|O, "Light" , opt_view_light , 0. ,
+    "Enable light sources?" },
+  { F|O, "ShowElement" , opt_view_show_element , 0. ,
+    "Show element boundaries?" },
+  { F|O, "ShowTime" , opt_view_show_time , 1. ,
+    "Show time value (or time step) if NbTimeStep > 1?" },
+  { F|O, "ShowScale" , opt_view_show_scale , 1. ,
+    "Show value scale?" },
+  { F|O, "DrawPoints" , opt_view_draw_points , 1. ,
+    "Display post-processing points?" },
+  { F|O, "DrawLines" , opt_view_draw_lines , 1. , 
+    "Display post-processing lines?" },
+  { F|O, "DrawTriangles" , opt_view_draw_triangles , 1. , 
+    "Display post-processing triangles?" },
+  { F|O, "DrawTetrahedra" , opt_view_draw_tetrahedra , 1. , 
+    "Display post-processing tetrahedra?" },
+  { F|O, "DrawScalars" , opt_view_draw_scalars , 1. , 
+    "Display scalar values?" },
+  { F|O, "DrawVectors" , opt_view_draw_vectors , 1. , 
+    "Display vector values?" },
+  { F|O, "DrawTensors" , opt_view_draw_tensors , 1. , 
+    "Display tensor values?" },
+  { F|O, "TransparentScale" , opt_view_transparent_scale , 1. ,
+    "Display a 'transparent' value scale?" },
+  { F|O, "ScaleType" , opt_view_scale_type , DRAW_POST_LINEAR ,
+    "Value scale type (1=linear, 2=logarithmic)" },
+  { F|O, "RangeType" , opt_view_range_type , DRAW_POST_DEFAULT ,
+    "Value scale range type (1=default, 2=custom)" },
+  { F|O, "ArrowType" , opt_view_arrow_type , DRAW_POST_ARROW ,
+    "Vector display type (1=segment, 2=arrow, 3=pyramid, 4=cone, 5=displacement)" },
+  { F|O, "ArrowLocation" , opt_view_arrow_location , DRAW_POST_LOCATE_COG , 
+    "Arrow location (1=cog, 2=vertex)" },
+  { 0, NULL , NULL , 0. , NULL }
 } ;
 
 StringXNumber PrintOptions_Number[] = {
-  { F|O, "Format" , opt_print_format , FORMAT_AUTO }, 
-  { F|O, "EpsQuality" , opt_print_eps_quality , 1 }, 
-  { F|O, "JpegQuality" , opt_print_jpeg_quality , 85 }, 
-  { F|O, "GifDither" , opt_print_gif_dither , 0 }, 
-  { F|O, "GifSort" , opt_print_gif_sort , 1 }, 
-  { F|O, "GifInterlace" , opt_print_gif_interlace , 0 }, 
-  { F|O, "GifTransparent" , opt_print_gif_transparent , 0 }, 
-  { F|O, "FontSize" , opt_print_font_size , 12. }, 
+  { F|O, "Format" , opt_print_format , FORMAT_AUTO , 
+    "Print format" }, 
+  { F|O, "EpsQuality" , opt_print_eps_quality , 1 ,
+    "Postscript quality (1=simple sort, 2=recursive sort)" },
+  { F|O, "JpegQuality" , opt_print_jpeg_quality , 85 ,
+    "JPEG quality (between 1 and 100)" },
+  { F|O, "GifDither" , opt_print_gif_dither , 0 ,
+    "Apply dithering to GIF output" },
+  { F|O, "GifSort" , opt_print_gif_sort , 1 ,
+    "Sort the colormap in GIF output" },
+  { F|O, "GifInterlace" , opt_print_gif_interlace , 0 ,
+    "Interlace GIF output" },
+  { F|O, "GifTransparent" , opt_print_gif_transparent , 0 ,
+    "Output transparent GIF image" },
+  { F|O, "FontSize" , opt_print_font_size , 12. ,
+    "Font size used for postscript printing" },
   { 0, NULL , NULL , 0. }
 } ;
 
@@ -294,188 +502,228 @@ StringXColor GeneralOptions_Color[] = {
   { F|O, "Background" , opt_general_color_background ,
     PACK_COLOR(0,   0,   0,   255), 
     PACK_COLOR(255, 255, 255, 255), 
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255), 
+    "Background color" },
   { F|O, "Foreground" , opt_general_color_foreground ,
     PACK_COLOR(255, 255, 255, 255),
     PACK_COLOR(0,   0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Foreground color" },
   { F|O, "Text" , opt_general_color_text ,
     PACK_COLOR(255, 255, 255, 255),
     PACK_COLOR(0,   0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Text color" },
   { F|O, "Axes" , opt_general_color_axes ,
     PACK_COLOR(255, 255, 0,   255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Axes color" },
   { F|O, "SmallAxes" , opt_general_color_small_axes ,
     PACK_COLOR(255, 255, 255, 255),
     PACK_COLOR(0,   0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
-  { 0, NULL , NULL ,  0, 0, 0 }
+    PACK_COLOR(0,   0,   0,   255),
+    "Small axes color" },
+  { 0, NULL , NULL ,  0, 0, 0 , NULL }
 } ;
 
 StringXColor GeometryOptions_Color[] = {
   { F|O, "Points" , opt_geometry_color_points , 
     PACK_COLOR(178, 182, 129, 255) ,
     PACK_COLOR(178, 182, 129, 255) ,
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255), 
+    "Normal geometry point color" },
   { F|O, "Lines" , opt_geometry_color_lines ,
     PACK_COLOR(0,   0,   255, 255),
     PACK_COLOR(0,   0,   255, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Normal geometry curve color" },
   { F|O, "Surfaces" , opt_geometry_color_surfaces ,
     PACK_COLOR(128, 128, 128, 255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Normal geometry surface color" },
   { F|O, "Volumes" , opt_geometry_color_volumes ,
     PACK_COLOR(128, 128, 128, 255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Normal geometry volume color" },
   { F|O, "PointsSelect" , opt_geometry_color_points_select ,
     PACK_COLOR(255, 0,   0,   255),
     PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Selected geometry point color" },
   { F|O, "LinesSelect" , opt_geometry_color_lines_select ,
     PACK_COLOR(255, 0,   0,   255),
     PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Selected geometry curve color"  },
   { F|O, "SurfacesSelect" , opt_geometry_color_surfaces_select ,
     PACK_COLOR(255, 0,   0,   255),
     PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Selected geometry surface color" },
   { F|O, "VolumesSelect" , opt_geometry_color_volumes_select ,
     PACK_COLOR(255, 0,   0,   255),
     PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Selected geometry volume color" },
   { F|O, "PointsHighlight" , opt_geometry_color_points_highlight ,
     PACK_COLOR(0,   255, 0,   255),
     PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Highlighted geometry point color" },
   { F|O, "LinesHighlight" , opt_geometry_color_lines_highlight ,
     PACK_COLOR(0,   0,   255, 255),
     PACK_COLOR(0,   0,   255, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Highlighted geometry curve color" },
   { F|O, "SurfacesHighlight" , opt_geometry_color_surfaces_highlight ,
     PACK_COLOR(128, 128, 128, 255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Highlighted geometry surface color" },
   { F|O, "VolumesHighlight" , opt_geometry_color_volumes_highlight ,
     PACK_COLOR(128, 128, 128, 255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Highlighted geometry volume color" },
   { F|O, "Tangents" , opt_geometry_color_tangents ,
     PACK_COLOR(255, 255, 0,   255),
     PACK_COLOR(255, 255, 0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Tangent geometry vectors color" },
   { F|O, "Normals" , opt_geometry_color_normals ,
     PACK_COLOR(255, 0,   0,   255),
     PACK_COLOR(255, 0,   0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
-  { 0, NULL , NULL , 0, 0, 0  }
+    PACK_COLOR(0,   0,   0,   255),
+    "Normal geometry vectors color" },
+  { 0, NULL , NULL , 0, 0, 0 , NULL }
 } ;
 
 StringXColor MeshOptions_Color[] = {
   { F|O, "Points" , opt_mesh_color_points , 
     PACK_COLOR(0  , 123, 59 , 255),
     PACK_COLOR(0  , 123, 59 , 255),
-  },
+    PACK_COLOR(0,   0,   0,   255),
+    "Mesh vertex color" },
   { F|O, "PointsSupp" , opt_mesh_color_points_supp , 
     PACK_COLOR(255, 0,   255, 255),
     PACK_COLOR(255, 0,   255, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Mesh high order vertex color" },
   { F|O, "Lines" , opt_mesh_color_lines , 
     PACK_COLOR(0,   255, 0,   255),
     PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Mesh line color" },
   { F|O, "Triangles" , opt_mesh_color_triangles ,
     PACK_COLOR(153, 143, 255, 255),
     PACK_COLOR(153, 143, 255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Mesh triangle color (if ColorCarousel=0)" },
   { F|O, "Quadrangles" , opt_mesh_color_quadrangles ,
     PACK_COLOR(182, 92,  255, 255),
     PACK_COLOR(182, 92,  255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Mesh quadrangle color (if ColorCarousel=0)" },
   { F|O, "Tetrahedra" , opt_mesh_color_tetrahedra ,
     PACK_COLOR(0,   255, 0,   255),
     PACK_COLOR(0,   255, 0,   255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Mesh tetrahedron color (if ColorCarousel=0)" },
   { F|O, "Hexahedra" , opt_mesh_color_hexahedra ,
     PACK_COLOR(128, 255, 0,   255),
     PACK_COLOR(128, 255, 0,   255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Mesh hexahedron color (if ColorCarousel=0)" },
   { F|O, "Prisms" , opt_mesh_color_prisms ,
     PACK_COLOR(0,   255, 128, 255),
     PACK_COLOR(0,   255, 128, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Mesh prism color (if ColorCarousel=0)" },
   { F|O, "Pyramids" , opt_mesh_color_pyramid ,
     PACK_COLOR(128, 255, 128, 255),
     PACK_COLOR(128, 255, 128, 255),
-    PACK_COLOR(255, 255, 255, 255) },
-  { F|O, "Tangents" , opt_mesh_color_tangents ,
+    PACK_COLOR(255, 255, 255, 255),
+    "Mesh pyramid color (if ColorCarousel=0)" },
+  { F|O, "Normals" , opt_mesh_color_normals ,
     PACK_COLOR(128, 128, 128, 255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
-  { F|O, "Normals" , opt_mesh_color_normals ,
+    PACK_COLOR(0,   0,   0,   255),
+    "Normal mesh vector color" },
+  { F|O, "Tangents" , opt_mesh_color_tangents ,
     PACK_COLOR(128, 128, 128, 255),
     PACK_COLOR(128, 128, 128, 255),
-    PACK_COLOR(0,   0,   0,   255) },
+    PACK_COLOR(0,   0,   0,   255),
+    "Tangent mesh vector color" },
   { F|O, "One" , opt_mesh_color_1 ,
     PACK_COLOR(0  , 82 , 138, 255),
     PACK_COLOR(0  , 82 , 138, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "First color in color carousel" },
   { F|O, "Two" , opt_mesh_color_2 ,
     PACK_COLOR(255, 0  , 0  , 255),
     PACK_COLOR(255, 0  , 0  , 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Second color in color carousel" },
   { F|O, "Three" , opt_mesh_color_3 ,
     PACK_COLOR(31 , 110, 171, 255),
     PACK_COLOR(31 , 110, 171, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Third color in color carousel" },
   { F|O, "Four" , opt_mesh_color_4 ,
     PACK_COLOR(255, 255, 0  , 255),
     PACK_COLOR(255, 255, 0  , 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Fourth color in color carousel" },
   { F|O, "Five" , opt_mesh_color_5 ,
     PACK_COLOR(255, 0  , 255, 255),
     PACK_COLOR(255, 0  , 255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Fifth color in color carousel" },
   { F|O, "Six" , opt_mesh_color_6 ,
     PACK_COLOR(128, 128, 0  , 255),
     PACK_COLOR(128, 128, 0  , 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Sixth color in color carousel" },
   { F|O, "Seven" , opt_mesh_color_7 ,
     PACK_COLOR(128, 0  , 255, 255),
     PACK_COLOR(128, 0  , 255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Seventh color in color carousel" },
   { F|O, "Eight" , opt_mesh_color_8 ,
     PACK_COLOR(128, 128, 255, 255),
     PACK_COLOR(128, 128, 255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Eighth color in color carousel" },
   { F|O, "Nine" , opt_mesh_color_9 ,
     PACK_COLOR(128, 128, 255, 255),
     PACK_COLOR(128, 128, 255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
+    PACK_COLOR(255, 255, 255, 255),
+    "Nitnth color in color carousel" },
   { F|O, "Ten" , opt_mesh_color_10 ,
     PACK_COLOR(0  , 0  , 255, 255),
     PACK_COLOR(0  , 0  , 255, 255),
-    PACK_COLOR(255, 255, 255, 255) },
-  { 0, NULL , NULL , 0, 0, 0  }
+    PACK_COLOR(255, 255, 255, 255),
+    "tenth color in color carousel" },
+  { 0, NULL , NULL , 0, 0, 0 , NULL }
 } ;
 
 StringXColor SolverOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 }
+  { 0, NULL , NULL , 0, 0, 0 , NULL }
 } ;
 
 StringXColor PostProcessingOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 }
+  { 0, NULL , NULL , 0, 0, 0 , NULL }
 } ;
 
 StringXColor ViewOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 }
+  { 0, NULL , NULL , 0, 0, 0 , NULL }
 } ;
 
 StringXColor PrintOptions_Color[] = {
-  { 0, NULL , NULL , 0, 0, 0 }
+  { 0, NULL , NULL , 0, 0, 0 , NULL }
 } ;
 
 #undef S
diff --git a/Common/GetOptions.cpp b/Common/GetOptions.cpp
index 0df79de864..6f045e7310 100644
--- a/Common/GetOptions.cpp
+++ b/Common/GetOptions.cpp
@@ -1,4 +1,4 @@
-// $Id: GetOptions.cpp,v 1.17 2001-03-08 21:06:35 geuzaine Exp $
+// $Id: GetOptions.cpp,v 1.18 2001-05-07 06:25:25 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -64,6 +64,7 @@ void Print_Usage(char *name){
   Msg(DIRECT, "  -perspective          set projection mode to perspective");
 #endif
   Msg(DIRECT, "Other options:");      
+  Msg(DIRECT, "  -a, -g, -m, -s, -p    start in auto, geometry, mesh, solver or post mode (default: auto)");
   Msg(DIRECT, "  -v int                set verbosity level (default: 2)");
 #ifdef _XMOTIF
   Msg(DIRECT, "  -nothreads            disable threads");
@@ -91,7 +92,22 @@ void Get_Options (int argc, char *argv[], int *nbfiles) {
     
     if (argv[i][0] == '-') {
       
-      if(!strcmp(argv[i]+1, "0")){ 
+      if(!strcmp(argv[i]+1, "a")){ 
+        CTX.initial_context = 0; i++;
+      }
+      else if(!strcmp(argv[i]+1, "g")){ 
+        CTX.initial_context = 1; i++;
+      }
+      else if(!strcmp(argv[i]+1, "m")){ 
+        CTX.initial_context = 2; i++;
+      }
+      else if(!strcmp(argv[i]+1, "s")){ 
+        CTX.initial_context = 3; i++;
+      }
+      else if(!strcmp(argv[i]+1, "p")){ 
+        CTX.initial_context = 4; i++;
+      }
+      else if(!strcmp(argv[i]+1, "0")){ 
         CTX.batch = -1; i++;
       }
       else if(!strcmp(argv[i]+1, "1")){ 
diff --git a/Common/Options.cpp b/Common/Options.cpp
index 8221434d24..059cbf8e2e 100644
--- a/Common/Options.cpp
+++ b/Common/Options.cpp
@@ -1,4 +1,4 @@
-// $Id: Options.cpp,v 1.17 2001-05-04 22:42:21 geuzaine Exp $
+// $Id: Options.cpp,v 1.18 2001-05-07 06:25:25 geuzaine Exp $
 
 #include "Gmsh.h"
 #include "GmshUI.h"
@@ -106,6 +106,20 @@ void Init_Options_GUI(int num){
   Set_ColorOptions_GUI(num, PrintOptions_Color);
 }
 
+void Print_OptionCategory(int level, char *cat, FILE *file){
+  if(level & GMSH_SESSIONRC) return ;
+  if(file){
+    fprintf(file, "//\n");
+    fprintf(file, "// %s\n", cat);
+    fprintf(file, "//\n");
+  }
+  else{
+    Msg(DIRECT, "//");
+    Msg(DIRECT, "// %s", cat);
+    Msg(DIRECT, "//");
+  }
+}
+
 void Print_Options(int num, int level, char *filename){
   FILE *file;
   char tmp[256];
@@ -142,21 +156,27 @@ void Print_Options(int num, int level, char *filename){
     fprintf(file, "// this file isn't found, defaults are used.\n");
   }
 
+  Print_OptionCategory(level, "General options", file);
   Print_StringOptions(num, level, GeneralOptions_String, "General.", file);
   Print_NumberOptions(num, level, GeneralOptions_Number, "General.", file);
   Print_ColorOptions(num, level, GeneralOptions_Color, "General.", file);
+  Print_OptionCategory(level, "Geometry options", file);
   Print_StringOptions(num, level, GeometryOptions_String, "Geometry.", file);
   Print_NumberOptions(num, level, GeometryOptions_Number, "Geometry.", file);
   Print_ColorOptions(num, level, GeometryOptions_Color, "Geometry.", file);
+  Print_OptionCategory(level, "Mesh options", file);
   Print_StringOptions(num, level, MeshOptions_String, "Mesh.", file);
   Print_NumberOptions(num, level, MeshOptions_Number, "Mesh.", file);
   Print_ColorOptions(num, level, MeshOptions_Color, "Mesh.", file);
+  Print_OptionCategory(level, "Solver options", file);
   Print_StringOptions(num, level, SolverOptions_String, "Solver.", file);
   Print_NumberOptions(num, level, SolverOptions_Number, "Solver.", file);
   Print_ColorOptions(num, level, SolverOptions_Color, "Solver.", file);
+  Print_OptionCategory(level, "Post-processing options", file);
   Print_StringOptions(num, level, PostProcessingOptions_String, "PostProcessing.", file);
   Print_NumberOptions(num, level, PostProcessingOptions_Number, "PostProcessing.", file);
   Print_ColorOptions(num, level, PostProcessingOptions_Color, "PostProcessing.", file);
+  Print_OptionCategory(level, "View options", file);
   if(level & GMSH_FULLRC){
     for(i=0; i<List_Nbr(Post_ViewList) ; i++){
       sprintf(tmp, "View[%d].", i);
@@ -173,6 +193,7 @@ void Print_Options(int num, int level, char *filename){
     Print_ColorOptions(num, level, ViewOptions_Color, "View.", file);
     Print_ColorTable(num, "View.ColorTable", file);
   }
+  Print_OptionCategory(level, "Print options", file);
   Print_StringOptions(num, level, PrintOptions_String, "Print.", file);
   Print_NumberOptions(num, level, PrintOptions_Number, "Print.", file);
   Print_ColorOptions(num, level, PrintOptions_Color, "Print.", file);
@@ -229,7 +250,8 @@ void Print_StringOptions(int num, int level, StringXString s[], char *prefix, FI
   char tmp[1024];
   while(s[i].str){
     if(s[i].level & level){
-      sprintf(tmp, "%s%s = \"%s\";", prefix, s[i].str, s[i].function(num, GMSH_GET, NULL)) ;
+      sprintf(tmp, "%s%s = \"%s\"; // %s", prefix, 
+	      s[i].str, s[i].function(num, GMSH_GET, NULL), s[i].help) ;
       if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, "%s", tmp);
     }
     i++;
@@ -281,7 +303,8 @@ void Print_NumberOptions(int num, int level, StringXNumber s[], char *prefix, FI
   char tmp[1024];
   while(s[i].str){
     if(s[i].level & level){
-      sprintf(tmp, "%s%s = %g;", prefix, s[i].str, s[i].function(num, GMSH_GET, 0));
+      sprintf(tmp, "%s%s = %g; // %s", prefix, 
+	      s[i].str, s[i].function(num, GMSH_GET, 0), s[i].help);
       if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, tmp);
     }
     i++;
@@ -347,11 +370,12 @@ void Print_ColorOptions(int num, int level, StringXColor s[], char *prefix, FILE
   char tmp[1024];
   while(s[i].str){
     if(s[i].level & level){
-      sprintf(tmp, "%sColor.%s = {%d,%d,%d};", 
+      sprintf(tmp, "%sColor.%s = {%d,%d,%d}; // %s", 
 	      prefix, s[i].str,
 	      UNPACK_RED  (s[i].function(num, GMSH_GET, 0)),
 	      UNPACK_GREEN(s[i].function(num, GMSH_GET, 0)),
-	      UNPACK_BLUE (s[i].function(num, GMSH_GET, 0)));
+	      UNPACK_BLUE (s[i].function(num, GMSH_GET, 0)),
+	      s[i].help);
       if(file) fprintf(file, "%s\n", tmp); else Msg(DIRECT, tmp);
     }
     i++;
@@ -512,6 +536,10 @@ char * opt_print_font(OPT_ARGS_STR){
 // ************** Numeric option routines ****************************
 
 
+double opt_general_initial_context(OPT_ARGS_NUM){
+  if(action & GMSH_SET) CTX.initial_context = (int)val;
+  return CTX.initial_context;
+}
 double opt_general_fontsize(OPT_ARGS_NUM){
   if(action & GMSH_SET) CTX.fontsize = (int)val;
   return CTX.fontsize;
diff --git a/Common/Options.h b/Common/Options.h
index 3634054ad9..6e0263e4cc 100644
--- a/Common/Options.h
+++ b/Common/Options.h
@@ -32,6 +32,7 @@ char * opt_print_font(OPT_ARGS_STR);
 
 // NUMBERS
 
+double opt_general_initial_context(OPT_ARGS_NUM);
 double opt_general_fontsize(OPT_ARGS_NUM);
 double opt_general_graphics_fontsize(OPT_ARGS_NUM);
 double opt_general_graphics_position0(OPT_ARGS_NUM);
@@ -287,6 +288,7 @@ typedef struct {
   char *str ;
   char * (*function)(int num, int action, char *val) ;
   char *def ;
+  char *help ;
 } StringXString ;
 
 typedef struct {
@@ -294,6 +296,7 @@ typedef struct {
   char *str;
   double (*function)(int num, int action, double val) ;
   double def ;
+  char *help ;
 } StringXNumber ;
 
 typedef struct {
@@ -301,6 +304,7 @@ typedef struct {
   char *str ; 
   unsigned int (*function)(int num, int action, unsigned int val) ;
   unsigned int def1, def2, def3 ;
+  char *help ;
 } StringXColor ;
 
 void Init_Options (int num);
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 9cae98095f..0e348f4d26 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.71 2001-05-05 10:14:21 geuzaine Exp $
+// $Id: GUI.cpp,v 1.72 2001-05-07 06:25:26 geuzaine Exp $
 
 // To make the interface as visually consistent as possible, please:
 // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
@@ -69,6 +69,7 @@ Fl_Menu_Item m_menubar_table[] = {
   {"Help",0,0,0,FL_SUBMENU},
     {"Shortcuts...",             0, (Fl_Callback *)help_short_cb, 0},
     {"Command line options...",  0, (Fl_Callback *)help_command_line_cb, 0},
+    {"Current options...",       0, (Fl_Callback *)status_xyz1p_cb, (void*)4},
     {"About...",                 0, (Fl_Callback *)help_about_cb, 0},
     {0},
   {0}
diff --git a/Fltk/Main.cpp b/Fltk/Main.cpp
index 5a6ced8a7d..5f0321d9d1 100644
--- a/Fltk/Main.cpp
+++ b/Fltk/Main.cpp
@@ -1,11 +1,8 @@
-// $Id: Main.cpp,v 1.23 2001-04-17 11:22:00 geuzaine Exp $
+// $Id: Main.cpp,v 1.24 2001-05-07 06:25:26 geuzaine Exp $
 
 #include <signal.h>
 
-#ifndef _NOPLUGIN
 #include "PluginManager.h"
-#endif
-
 #include "Gmsh.h"
 #include "GmshUI.h"
 #include "GmshVersion.h"
@@ -49,11 +46,9 @@ int main(int argc, char *argv[]){
   if(CTX.verbosity && CTX.terminal)
     fprintf(stderr, "%s, Version %.2f\n", gmsh_progname, GMSH_VERSION);
 
-#ifndef _NOPLUGIN
   // Register Default Plugins (in test ...)
   if(CTX.default_plugins)
     GMSH_PluginManager::Instance()->RegisterDefaultPlugins();
-#endif
 
   // Initialize the static Mesh
 
@@ -122,6 +117,8 @@ int main(int argc, char *argv[]){
   Msg(STATUS3N, "Ready");
   Msg(STATUS1, "Gmsh %.2f", GMSH_VERSION);
 
+  // Log the following for bug reports
+  
   Msg(LOG_INFO, "-------------------------------------------------------");
   Msg(LOG_INFO, gmsh_os);
   Msg(LOG_INFO, gmsh_date);
@@ -129,7 +126,7 @@ int main(int argc, char *argv[]){
   Msg(LOG_INFO, gmsh_packager);
   Msg(LOG_INFO, "-------------------------------------------------------");
 
-  // Display the GUI to have a quick "a la Windows" launch time
+  // Display the GUI immediately to have a quick "a la Windows" launch time
 
   WID->check();
 
@@ -141,12 +138,28 @@ int main(int argc, char *argv[]){
 
   for(i=1;i<nbf;i++) MergeProblem(TheFileNameTab[i]);
   
-  // Init first context (geometry or post)
+  // Init first context
 
-  if(List_Nbr(Post_ViewList))
-    WID->set_context(menu_post, 0);
-  else
+  switch(CTX.initial_context){
+  case 1 :
     WID->set_context(menu_geometry, 0); 
+    break;
+  case 2 :
+    WID->set_context(menu_mesh, 0); 
+    break;
+  case 3 :
+    WID->set_context(menu_solver, 0); 
+    break;
+  case 4 :
+    WID->set_context(menu_post, 0); 
+    break;
+  default : // automatic
+    if(List_Nbr(Post_ViewList))
+      WID->set_context(menu_post, 0);
+    else
+      WID->set_context(menu_geometry, 0); 
+    break;
+  }    
 
   // Read background mesh on disk
 
diff --git a/doc/VERSIONS b/doc/VERSIONS
index 6bc6cfdcc1..f588115459 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,8 +1,9 @@
-$Id: VERSIONS,v 1.14 2001-05-06 14:35:50 geuzaine Exp $
+$Id: VERSIONS,v 1.15 2001-05-07 06:25:26 geuzaine Exp $
 
 New in 1.19: Fixed seg. fault for scalar simplex post-processing; new
-"Solver" menu; first solver interface for GetDP (through sockets);
-fixed scale display problem;
+Solver menu; interface for GetDP solver through sockets; fixed
+multiple scale alignment; added some options + full option
+descriptions;
 
 New in 1.18: Fixed many small bugs and incoherences in
 post-processing; fixed broken background mesh in 1D mesh generation.
diff --git a/www/gmsh.html b/www/gmsh.html
index 1d79f725b6..f9e2c6cb08 100644
--- a/www/gmsh.html
+++ b/www/gmsh.html
@@ -50,7 +50,7 @@ ENDSCRIPT--->
 This page is a mirror of <a href="/gmsh/">/gmsh/</a><p>
 ENDMIRROR--->
 
-<!---BEGINDATE$Date: 2001-05-04 13:45:08 $ENDDATE--->
+<!---BEGINDATE$Date: 2001-05-07 06:25:26 $ENDDATE--->
 
 Copyright &copy; 1998-2001<br>
 Jean-François Remacle and
@@ -326,7 +326,7 @@ ENDSCRIPT--->
 
   <td bgcolor="#ededed"><font face="Helvetica, Arial" size=-1>
 
-<b>Latest Release: 1.19 (May 10, 2001)</b>
+<b>Latest Release: 1.19 (May 7, 2001)</b>
 <p>
 Executable versions of Gmsh are available for Windows and for most of
 the classical UNIX platforms. These versions are free, and are all
-- 
GitLab