Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildcmd.pro	(revision 150)
@@ -3,28 +3,31 @@
 ;------------------------------------------------------------
 ;+
-; NAME:buildcmd
-;
-; PURPOSE:cette fonction reourne un string qui contient la commande de
-; lecture et les parametres du trace.
-;
-; CATEGORY:
-;
-; CALLING SEQUENCE:
-; 
-; INPUTS:
-;
-; KEYWORD PARAMETERS:
-;
-; OUTPUTS:
-;
-; COMMON BLOCKS:
-;
-; SIDE EFFECTS:
-;
-; RESTRICTIONS:
-;
-; EXAMPLE:
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
+;
+; @file_comments
+; This function send back a string which contain the reading command 
+; and drawing's parameters.
+;
+; @param BASE {in}{required}
+;
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+;
+; @keyword FORCETYPE
+;
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;
+; @version
+; $Id$
+;
+; @todo
+; seb: documenter le param BASE et le keyword FORCETYPE
 ;
 ;-
@@ -56,6 +59,5 @@
 ;------------------------------------------------------------
 ;---------------
-; on determine quelle procedure on va etre appele pour faire le dessin
-; et le type
+; We determinate which procedure we will call to do the drawing and the type
 ;---------------
   IF keyword_set(forcetype) THEN type = forcetype $
@@ -81,5 +83,5 @@
   endcase
 ;
-;  recherche des options
+;  Search of options
 ;
   options = extractatt(top_uvalue, 'options')   
@@ -94,5 +96,5 @@
   alreadyvector = extractatt(top_uvalue, 'alreadyvector')
   alreadyover = extractatt(top_uvalue, 'alreadyoer')
-; que devons-nous lire ?
+; What must we read ?
   case 1 of
     alreadyover NE -1:BEGIN
@@ -340,14 +342,13 @@
 ;-----------------------
 ;---------------
-; determination du nom de la boxzoom 
-;---------------
+; determination of the boxzoom's name.
   if NOT keyword_set(boxzoom) then widget_control, domainid, get_value = boxzoom
-; ecriture de celle-ci sous forme d''un string
+; Writting of this one as a string
   box = '['+strtrim(boxzoom[0], 1)
   for i = 1, (n_elements(boxzoom)-1) < (3+2*(strpos(type, 'z') EQ -1)) do $
     box = box+', '+strtrim(boxzoom[i], 1)
-; pour les [plots en z, box doit avoir par defaut 0,profmax
+; For [plots in z, box must have by default 0,profmax
   if strpos(type, 'z') NE -1 then BEGIN
-; si + de 1 niveau est selectionne:
+; If more than 1 level is selected: 
     widget_control, widget_info(base, find_by_uname = 'dthlv1'), get_value = niv1
     niv1 = niv1.combobox_index
@@ -372,5 +373,5 @@
   ENDIF
 ;---------------
-; on determine typein
+; We determinate typein
 ;---------------
     IF strpos(type, ' diag ') NE -1 THEN typein = ''''+strmid(type, 0, 4)+'''' $
@@ -378,9 +379,9 @@
 ;---------------
 ;---------------
-; determination de small
+; determination of small
 ;---------------
   ssmall = tostr(smallout)
 ;------------------------------------------------------------
-; on va definir le string qui contiendra la commande a executer par widgetdessine.pro
+; We will define the string which will contain the command to be executed by widgetdessine.pro
 ;------------------------------------------------------------
   Cmd = [readCmd, procedure+ ', field $' $
@@ -395,5 +396,5 @@
 ;    print, '---------------'
 ;---------------
-; on complete et/ou actualise la structure top_uvalue...
+; We complete and/or update the structure top_uvalue...
 ;---------------
   (*top_uvalue[1, findline(top_uvalue, 'nameprocedures')])[numdessinout] = procedure
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/buildreadcmd.pro	(revision 150)
@@ -1,34 +1,45 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 ;+
-; NAME:buildreadcmd
+; 
+; @param BASE {in}{required} 
+; The id of the widget where apply the drawing.
 ;
-; PURPOSE:
+; @param SNAMEEXP {in}{required}
 ;
-; CATEGORY:
 ;
-; CALLING SEQUENCE:
+; @param PROCEDURE {in}{required}
+;
+;
+; @param TYPE {in}{required}
+;
 ; 
-; INPUTS:
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
 ;
-; KEYWORD PARAMETERS:
+; @keyword COMPLETE
 ;
-; OUTPUTS:
+;  
+; @keyword NAMEFIELD
 ;
-; COMMON BLOCKS:common.pro
 ;
-; SIDE EFFECTS:
+; @uses
+; common.pro
+; 
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+; 
+; @version 
+; $Id$
 ;
-; RESTRICTIONS:
-;
-; EXAMPLE:
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
+; @todo
+; seb: documenter les param et les keyword qui ne le sont pas.
 ;
 ;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 FUNCTION buildreadcmd, base, snameexp, procedure, type, BOXZOOM = boxzoom $
                        , COMPLETE = complete, NAMEFIELD = namefield
@@ -135,6 +146,5 @@
 ;------------------------------------------------------------
 ;------------------------------------------------------------
-; on va definir le string qui contiendra la commande a executer pour
-; la lecture
+; We will define the string which will contain the command to be executed for the reading.
 ;------------------------------------------------------------
     Cmd = ['; Definition of extra structure:', 'extra = '+sextra $
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefield.pro	(revision 150)
@@ -1,2 +1,47 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param BASE {in}{required}
+; The id of the widget where apply the drawing.
+;
+; @param NEWFIELDNAME
+;
+; 
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb
+;
+;-
 PRO changefield, base, newfieldname, BOXZOOM = boxzoom
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/changefile.pro	(revision 150)
@@ -1,2 +1,54 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param BASE {in}{required}
+; The id of the widget where apply the drawing.
+;
+; @param NEWFILENAME
+;
+; 
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+; 
+; @keyword DATE1
+; 
+; @keyword DATE2
+;
+; @keyword FIELDNAME
+; 
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb
+;
+;-
 PRO changefile, base, newfilename, BOXZOOM = boxzoom, DATE1 = date1, DATE2 = date2, FIELDNAME = fieldname
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/createhistory.pro	(revision 150)
@@ -1,2 +1,47 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param BASE {in}{required}
+; The id of the widget where apply the drawing.
+;
+; @param SMALL
+; Vector composed of 3 or 4 elements, applyed to make a drawing on a small 
+; portion of a page or screen. It delimit the zone where the drawing will 
+; be done. If there is 4 elements: then is constituated of coordinates (expressed 
+; in cm located from the up and left corner of the page or the window (in portrait 
+; like in lanscape)) of the bottom and left corner and of the up and right corner 
+; of the drawing zone. If there is 3 elements: in this case, we divide the page or 
+; the screen in small[0] columns and in small[1] lines the drawing made in the box 
+; numbered small[2]. The numerotation starting up and left by the number 1 and then, 
+; following the writing direction. By default, we make the largest drawing we can do, 
+; conserving the aspect rapport (exept when REMPLI is activated).
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb: je ne suis pas sur pour les param,
+; documenter le reste.
+;
+;-
 PRO createhistory, base, small
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/cutcmd.pro	(revision 150)
@@ -1,2 +1,49 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param WIDCMD
+;
+;
+; @param TOREAD
+;
+;
+; @param NUMBEROFREAD
+;
+;
+; @param PREFIX
+;
+;
+; @param NAMEEXP
+;
+;
+; @param ENDING
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+; 
+; @todo
+; seb
+;
+;-
 PRO cutcmd, widcmd, toread, numberofread, prefix, nameexp, ending
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/definedefaultextra.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/definedefaultextra.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/definedefaultextra.pro	(revision 150)
@@ -1,2 +1,34 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param NOMVARIABLE
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 FUNCTION definedefaultextra, nomvariable
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/doubleclickaction.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/doubleclickaction.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/doubleclickaction.pro	(revision 150)
@@ -1,2 +1,34 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param EVENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 PRO doubleclickaction, event
 ;------------------------------------------------------------
@@ -6,8 +38,8 @@
    widget_control, event.id , get_uvalue = uval
    widget_control, event.top, get_uvalue = top_uvalue
-; on active la bonne fenetre 
+; We activate the right window
    widget_control, event.id, get_value = win
    wset, win
-; quel est le dessin selectionne??
+; What is the selected drawing?
    smallin = extractatt(top_uvalue, 'smallin')
    smallout = extractatt(top_uvalue, 'smallout')
@@ -17,5 +49,5 @@
    numligne = n_elements(where(findgen(smallin[1])/smallin[1] lt 1-y))-1
    numdessin = numcolonne+numligne*smallin[0]+1
-; choix du type d''action
+; Choice of the type of action.
    case uval.press of
       1:BEGIN
@@ -46,5 +78,5 @@
          inserthistory, event.top, ';', '; beginning of '+strtrim(numdessin, 2) $
           , '; end of '+strtrim(numdessin, 2)
-; remise a 0 des attributs de la uvalue concernant ce dessin:
+; Putting at 0 of attributes of the value concerning the drawing: 
 
          numdessin = numdessin-1
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/extractatt.pro	(revision 150)
@@ -1,2 +1,37 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param TOP_UVALUE
+;
+;
+; @param NAME
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+; 
+; @todo
+; seb
+;
+;-
 FUNCTION extractatt, top_uvalue, name
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/findline.pro	(revision 150)
@@ -1,2 +1,37 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param TOP_UVALUE
+;
+;
+; @param NAME
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+; 
+; @todo
+; seb
+;
+;-
 FUNCTION findline, top_uvalue, name
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/identifyclick.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/identifyclick.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/identifyclick.pro	(revision 150)
@@ -1,2 +1,34 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param EVENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 FUNCTION identifyclick, event
 ;
@@ -7,13 +39,13 @@
    if thisEvent EQ 'WIDGET_TIMER' then press = 0 ELSE press = event.press
 ;
-;  d/0/>1 -------->t/1/0--------->**d/2/0**       long click
-;         -------->d/1/0--------->**t/2/0**  click normal
+;  d/0/>1 -------->t/1/0--------->**d/2/0**    long click
+;         -------->d/1/0--------->**t/2/0**  normal click
 ;                       --------->**d/2/>1**-------->d/3/0----->t/0/0  double click
 ;                                           -------->t/3/0----->d/0/0  double click
    type = 'inutile'
    case 1 OF
-; d/0/0 1er remonte
+; d/0/0 1er reascending
       thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 0 AND press EQ 0:
-; d/0/>1 1er appuie de la serie
+; d/0/>1 1er click of the series
       thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 0 AND press ge 1:BEGIN
          uval.x = [event.x, 0]
@@ -23,7 +55,7 @@
          widget_control, event.id, timer = .3
       END
-; d/1/0 1er remonte
+; d/1/0 1er reascending
       thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 1 AND press EQ 0:uval.click = 2
-; d/2/0 fin long click
+; d/2/0 End of the long click
       thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 2 AND press EQ 0:BEGIN
          type = 'long'
@@ -39,11 +71,11 @@
          uval.click = 3
       END
-; d/3/0 remonte et fin de double click
+; d/3/0 reascending and end of the double click
       thisEvent EQ 'WIDGET_DRAW' AND uval.click EQ 3 AND press EQ 0:uval.click = 0
-; t/0/0 fin de double click
+; t/0/0 End of the double click
       thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 0 AND press EQ 0:
 ; t/1/0 long click
       thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 1 AND press EQ 0:uval.click = 2
-; t/2/0 click normal
+; t/2/0 normal click
       thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 2 AND press EQ 0:BEGIN 
          type = 'single'
@@ -51,7 +83,7 @@
          uval.click = 0
       END
-; t/3/0 fin de double click
+; t/3/0 End of the double click
       thisEvent EQ 'WIDGET_TIMER' AND uval.click EQ 3 AND press EQ 0:uval.click = 0
-; cas normalement impossible:
+; Imposible case in theory:
       ELSE:BEGIN
          print, thisEvent, uval.click, press
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/inserthistory.pro	(revision 150)
@@ -1,4 +1,45 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param BASE
+;
+;
+; @param TEXT
+;
+;
+; @param LINE1
+;
+;
+; @param LINE2
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
+;-------------------------------------------------------------
 PRO inserthistory,  base, text, line1, line2
-;-------------------------------------------------------------
 ;
   compile_opt idl2, strictarrsubs
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/letsdraw.pro	(revision 150)
@@ -1,38 +1,30 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 ;+
-; NAME:widgetdessine
+; @file_comments 
+; It si the procedure lauching the drawing. 
+; If we do not give the command to it, it call 
+; construitcommande to know what to trace.
 ;
-; PURPOSE: c'est la procedure qui lance le dessin. Si on ne le lui
-; donne pas de commande, elle appelle construitcommande pour savoir
-; quoi tracer.
+; @categories
 ;
-; CATEGORY:
+; 
+; @param BASE {in}{required}
+; The id of the widget where apply the drawing.
+; 
+; @keyword COMMANDE
+; A string of the style: read_data('sst'...),...
 ;
-; CALLING SEQUENCE:widgetdessine, base
+; @keyword _EXTRA
+; Used to pass your keywords 
 ; 
-; INPUTS:base: l''id du widget ou appliquer le dessin
-;
-; KEYWORD PARAMETERS:
-;       COMMANDE: un string du style: read_data('sst'...),....
-;
-; OUTPUTS:
-;
-; COMMON BLOCKS:common.pro
-;
-; SIDE EFFECTS:
-;
-; RESTRICTIONS:
-;
-; EXAMPLE:
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;
+; @uses
+; common.pro 
+; 
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+; 
+; @version 
+; $Id$
+; 
 ;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
-
 PRO letsdraw, base, COMMANDE = commande, _extra = ex
 ;
@@ -40,5 +32,5 @@
 ;
 @common
-; on recupere la uvalue de base
+; we recuperate the uvalue of base
 ; widget_control,base, get_uvalue = top_uvalue
 ; print, '*****************'
@@ -61,14 +53,11 @@
 ;
 ;
-; on recuperel''id de la fenetre graphique associee au widget d''id base
+; we recuperate the id of the graphic associated to the widget of id base.
    graphid = extractatt(top_uvalue, 'graphid')
    widget_control, graphid, get_value = win
-; on la selectionne (c''est a elle que sera passe toutes les commandes
-; concernant une fenetre)
+; We select it (we will pass to it all commands concerning the window)
    wset, win
-;   erase, 255                       ; on netoie la fenetre
-; on s''assure que si on travaille avec un ecran codant les couleurs
-; sur 24 bits la couleur de fond specifiee!p.background est bien
-; appliquee
+;   erase, 255                       ; we clean the window
+; We make sure that, if we work with a screen coding colors on 24 bits, the specified background color !p.background is the one applied.
 ;    if !d.n_colors gt 256 then begin
 ;       device, decomposed=1
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/loadgrid.pro	(revision 150)
@@ -1,2 +1,37 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param MESHFILEIN
+;
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb
+;
+;-
 PRO loadgrid, meshfilein, _extra = ex
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/longclickaction.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/longclickaction.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/longclickaction.pro	(revision 150)
@@ -1,2 +1,34 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param EVENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 PRO longclickaction, event
 ;
@@ -5,5 +37,5 @@
   widget_control, event.id, get_uvalue = uval
   widget_control, event.top, get_uvalue = top_uvalue
-; quel est le dessin selectionne??
+; What is the selected drawing?
   smallout = extractatt(top_uvalue, 'smallout')
   smallin = extractatt(top_uvalue, 'smallin')
@@ -32,5 +64,5 @@
   domainid = widget_info(event.top, find_by_uname = 'domain')
   boxzoom = [x, y]
-; faut-il passer la boxzoom en indexes ???
+; Do we have to pass the boxzoom in indexes ???
   currentplot = (extractatt(top_uvalue, 'smallin'))[2]-1
   options = extractatt(top_uvalue, 'options')   
@@ -40,5 +72,5 @@
   changey = (flags[where(options EQ 'Latitude / y index')])[0] EQ 1
   if changex OR changey then begin
-; on veut retrouver le type de grille qui est utilisee
+; We want to find the type of grid which is used
     currentfile = extractatt(top_uvalue, 'currentfile')
     listgrid = (*(extractatt(top_uvalue, 'fileparameters'))[currentfile]).listgrid
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/read_vermair.pro	(revision 150)
@@ -1,2 +1,59 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param NAME
+;
+;
+; @param DEBUT
+;
+;
+; @param FIN
+;
+;
+; @param NOMEXP
+;
+;
+; @keyword PARENT
+; same as DIALOG_PARENT de dialog_message.pro
+;
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+;
+; @keyword _EXTRA
+; Used to pass your keywords 
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb
+; 
+;-
 FUNCTION read_vermair, name, debut, fin, nomexp, PARENT = parent, BOXZOOM=boxzoom, _EXTRA = ex
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/scanfile.pro	(revision 150)
@@ -1,2 +1,40 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param NAMEFILE
+;
+; 
+; @keyword GRID
+;
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb : I don't know what to do with that...
+; 
+;-
 ;
 ;  liste des presupposes:
@@ -145,5 +183,5 @@
           time = date0fk + lindgen(jpt)
         ENDIF ELSE BEGIN 
-; on lit l''axe des temps
+; we read the time axis
           ncdf_varget, cdfid, varid, time
           time = double(time)
@@ -180,9 +218,8 @@
           ENDELSE
 ;
-; ATTENTION il faut recuperer l''attribut calendar et ajuster time en
-; consequense...
-;
-;
-; on passe time en jour julien d''idl 
+; BEWARE we have to recuperate the calendar attribute and ajust TIME by consequence...
+;
+;
+; We pass TIME in IDL julian days
 ;
           unite = strlowcase(unite)
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/selectfile.pro	(revision 150)
@@ -144,4 +144,45 @@
 end
 ;*********************************************************************
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param DATAFILENAME
+;
+;
+; @param IDLFILE
+;
+;
+; @param ARGSPRO
+;
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+; 
+; @todo
+; seb: documenter les params
+; 
+;-
 FUNCTION selectfile, datafilename, idlfile, argspro, _extra = ex
 ;
@@ -153,9 +194,9 @@
 ;------------------------------------------------------------
 ;
-; pour recuperer les reponses possees lors de l''utilisation de ce
-; widget on cree un pointeur que l''on place dans la uvalue. Comme ca
-; une fois que le widget est detruit dans la procedure ...event.pro,
-; la variable surlaquelle pointait le pointeur (contenue ds la uvalue
-; du widget) n''est pas detruite est on peut recuperer le resultat!
+; We create a pointer in the uvalue to recuperate answers at setted 
+; questions atthe time of the use of this widget. So when the widget 
+; is deleted in the procedure ...event.pro, the variable on which the 
+; pointer pointed (contained in the uvalue of the widget) is not 
+; deleted and we can recuperate the result!
 ;
   messenger = ptr_new(/allocate_heap)
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/singleclickaction.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/singleclickaction.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/singleclickaction.pro	(revision 150)
@@ -1,2 +1,34 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param EVENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 PRO singleclickaction, event
 ;
@@ -14,8 +46,8 @@
   type = widget_info(actionid, /combobox_gettext)
   IF type NE 'plt' THEN return
-; on active la bonne fenetre 
+; We activate the right window
   widget_control, event.id, get_value = win
   wset, win
-; choix du type d''action
+; choice of the type of action
   case uval.press of
     1:BEGIN
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/tracecadre.pro	(revision 150)
@@ -1,6 +1,46 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param SMALL
+;
+; 
+; @keyword OUT
+;
+;
+; @keyword ERASE
+;
+;
+; @keyword FILL
+; 
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 PRO tracecadre, small, out = out, erase = erase, fill = fill
 ;------------------------------------------------------------
-; determination de la colonne et de la ligne correspondant au small en
-; entree
+; determination of the column and of the line corresponding in input to small
 ;
   compile_opt idl2, strictarrsubs
@@ -9,5 +49,5 @@
    numligne = numdessin/small[0]
    numcolonne = numdessin-numligne*small[0]
-; determination de poscadre
+; determination of poscadre
    largeurcolonne = 1./small[0]
    largeurligne = 1./small[1]
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/updatewidget.pro	(revision 150)
@@ -1,2 +1,43 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param BASE {in}{required}
+; The id of the widget where apply the drawing.
+; 
+; @keyword NOBOXZOOM
+;
+;
+; @keyword NODATES
+;
+;
+; @keyword NOTYPE
+; 
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 PRO updatewidget, base, NOBOXZOOM = noboxzoom, NODATES = nodates, NOTYPE = notype
 ;----------------------------------------------------------------------
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/xcreateanim.pro	(revision 150)
@@ -1,2 +1,34 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param EVENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 pro xcreateanim_event, event 
 ;
@@ -4,5 +36,5 @@
 ;
 @common
-; on recupere les aguments contenus ds le widget
+; We recuperate arguments contained in the widget
   if tag_names(event, /structure_name) NE 'WIDGET_BUTTON' then return
   widget_control, event.id, get_uvalue = uval
@@ -12,5 +44,5 @@
     return
   ENDIF
-; on va ecrire l''animation!
+; We will write the animation!
 ;
   widget_control, event.top, get_uvalue = local_uvalue
@@ -36,24 +68,24 @@
   index2 = where(calendar eq date2jul(vdate2)) & index2 = index2[0] 
   if index2 EQ -1 OR index2 LE index1 then return
-; on detruit le widget avant de creer le fichier .ps
+; We delete the widget before create the file .ps
   widget_control, event.top, /destroy
 ;
-; creation de la routine qui nous serviera pour faire le dessin
-;
-; on recupere la liste des instructions
+; creation of the routine which will serve us to do the drawing
+;
+; We recuperate the list of instructions 
   globalcommand = extractatt(top_uvalue, 'globalcommand')
-; on complete par le premiere et les dernieres lignes du programme
+; We complete by first and last lines of the program
   createpro, globalcommand, filename = myuniquetmpdir + 'xxx2ps.pro' $
              , KWDLIST = ', NOERASE = noerase, POSTSCRIPT = postscript, DATE1IN = date1in, DATE2IN = date2in'
 ;
-;--------creation du fichier----------
-;
-;  recupere le nombre d'octets surlequel on code la palette
+;--------creation of the file---------
+;
+;  we recuperate the number of octets on which we code the palette.
   device, get_visual_depth = depth
-; taille de l''image (en nombre de pixel:
+; Picture's size (in number of pixels):
   xsize = !d.x_size
   ysize = !d.y_size
 ;
-; on verifie que le nom du fichier termine bien par .gif
+; We check that the file's name end by .gif
   if strpos(nomfic, '.gif') EQ -1 then nomfic = nomfic+'.gif'
 
@@ -62,5 +94,5 @@
 
 
-; indication du numero de l''image que l''on est en train de creer
+; indication of the number of the picture we are creating
   base = widget_base()
   sliderid = widget_slider(base, minimum = 1, maximum = index2-index1+1, value = 1 $
@@ -68,5 +100,5 @@
   widget_control, base, /realize
 ;
-; commencement du fichier gif. ecriture d''une image vide 
+; Beginning of the gif file. Writting of an empty  picture.
   IF keyword_set(fakecal) THEN date = index1 ELSE date = jul2date(calendar[index1])
   xxx2ps, /noerase, date1in = date, date2in = date
@@ -91,10 +123,10 @@
   wdelete, !d.window
 ;
-; boucle de creation et d''ecriture ds le fichier.
+; Creation and writting loop in the file.
 ;
   IF index2 GT index1 THEN BEGIN
     FOR ind = index1+1, index2 do BEGIN
 ;
-      widget_control, sliderid, set_value = ind-index1+1 ; on bouge le slider
+      widget_control, sliderid, set_value = ind-index1+1 ; We move the slider.
 ;
       window, /free, /pixmap, xsize = xsize, ysize = ysize
@@ -111,5 +143,5 @@
     ENDFOR
   ENDIF 
-; on met une derniere image blanche
+; We put a last white picture
   window, /free, /pixmap, xsize = xsize, ysize = ysize
   reinitplt
@@ -122,13 +154,13 @@
   write_gif, animdir+nomfic, image, red, green, blue, /multiple
   wdelete, !d.window
-; fermeture du fichier
+; File's closing.
   write_gif, animdir+nomfic, /close 
   widget_control, base, /destroy 
-; rebascule en mode "normal"
+; Rerock in "normal" mode
   thisOS = strupcase(strmid(!version.os_family, 0, 3))
 ;
   wset, current_window
 
-; si on est sous x on essaie de lancer xanim...
+; If we are under x, we try to lauch xanim...
 
   if thisOS NE 'MAC' AND thisOS NE 'WIN' then begin
@@ -141,4 +173,36 @@
 end
 ;----------------------------------------------------------------
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param PARENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo
+; seb
+;
+;-
 PRO xcreateanim, parent
 ;
@@ -149,5 +213,5 @@
    widget_control, parent, get_uvalue = top_uvalue
 ;
-; on va s''assurer que toutes les procedures de sont pas pltt
+; We will make sure that all procedure are not in pltt
 ;
    procedures = extractatt(top_uvalue, 'nameprocedures')
@@ -157,5 +221,5 @@
    ENDIF
 ;
-; on va s''assurer que toutes les figures ont le meme calendrier 
+; We will make sure that all figure have the same calendar
 ;
    filelist = extractatt(top_uvalue,  'filelist')
@@ -183,5 +247,5 @@
    endif
 ;
-; c''est possible de faire une animation  
+; It is possible to do an animation.
 ;
    base = widget_base(/column, title = 'animation creation', uvalue = {parent:parent, indexfile:indexfile})   
Index: trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/xxxmenubar_event.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/xxxmenubar_event.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/AUTOUR_de_XXX/xxxmenubar_event.pro	(revision 150)
@@ -1,2 +1,33 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param EVENT
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo 
+; seb
+;-
 ;------------------------------------------------
 PRO xxxmenubar_event, event
@@ -15,24 +46,24 @@
       widget_control, event.top, update = 0
       widget_control, event.top, get_uvalue = top_uvalue
-; on s''occupe de filelist
+; We take care of filelist
       filelist = extractatt(top_uvalue, 'filelist')
       filelist = [filelist, newfile.fileparameters.filename]
       currentfile = n_elements(filelist)-1
-; on update le widget
+; We update the widget
       filelistid = widget_info(event.top, find_by_uname = 'filelist')
       widget_control, filelistid, combobox_additem = file_basename(newfile.fileparameters.filename)
       widget_control, filelistid, set_combobox_select = currentfile
-; on update les elements filelist et currentfile de la top_uvalue
+; We update filelist and currentfile's elements of the top_value
       *top_uvalue[1, findline(top_uvalue, 'filelist')] = filelist
       oldfile = *top_uvalue[1, findline(top_uvalue, 'currentfile')]
       *top_uvalue[1, findline(top_uvalue, 'currentfile')] = currentfile
-; on s''occupe du nom de la variable
+; We take care of the name of the variable
       vlstid = widget_info(event.top, find_by_uname = 'varlist')
-; quel etait le champ selectionne ? on le reselectionne ?
+; What is the selected field ? Do we reselect it ?
       fieldname = widget_info(vlstid, /combobox_gettext)
       index = where(newfile.fileparameters.listvar EQ fieldname) 
       widget_control, vlstid, set_value = newfile.fileparameters.listvar
       widget_control, vlstid, set_combobox_select = 0 > index[0]
-; on s''occupe du calendrier
+; We take care of the calendar.
       key_caltype = newfile.fileparameters.caltype
       date1id = widget_info(event.top, find_by_uname = 'calendar1')
@@ -53,5 +84,5 @@
       rien = cw_calendar(basecal, newfile.fileparameters.time_counter, jdate2, uname = 'calendar2' $
                          , FAKECAL = fakecal, uvalue = {name:'calendar2'}, /frame)
-; on update les elements fileparameters, readparameters et meshparameters de la top_uvalue
+; We update fileparameters, readparameters et meshparameters elements of the top_value
       newfileparameters = ptrarr(currentfile+1, /allocate_heap)
       FOR i = 0, currentfile-1 DO $
@@ -74,5 +105,5 @@
       ptr_free, extractatt(top_uvalue, 'meshparameters')
       *top_uvalue[1, findline(top_uvalue, 'meshparameters')] = newmeshparameters
-; on actualise le widget!
+; We update the widget!
       if cmpgrid(oldmeshparams) then BEGIN
         domainid = widget_info(event.top, find_by_uname = 'domain')
@@ -93,5 +124,5 @@
       ptr_free, extractatt(top_uvalue, 'meshparameters')
       ptr_free, top_uvalue
-      widget_control, event.top, /destroy ;on ferme le widget
+      widget_control, event.top, /destroy ;We shut the widget
     end
     'PostScript' :BEGIN
@@ -101,8 +132,8 @@
       ENDIF
       widget_control, event.top, get_uvalue = top_uvalue
-; on recupere la liste des instructions
+; We recuperate the list of instructions
       globalcommand = extractatt(top_uvalue, 'globalcommand')
 ;      for i = 0, n_elements(globalcommand)-1 do print, globalcommand[i]
-; on complete par le premiere et les dernieres lignes du programme
+; We complete by first and last lines of the program.
       createpro, globalcommand, filename = myuniquetmpdir + 'xxx2ps.pro' $
                  , KWDLIST = ', NOERASE = noerase, POSTSCRIPT = postscript' $
@@ -136,17 +167,17 @@
         return
       ENDIF
-; on recupere le nom du fichier
+; We recuperate the name of the file
       filename = xquestion('dans quelle procedure IDL voulez vous sauver !C la realisation de ce graph?', 'xxx_figure.pro')
-; on le complete par un .pro
+; We complete it by a .pro
       if rstrpos(filename, '.pro') NE strlen(filename)-4 then filename = filename+'.pro'
       filename = isafile(file = filename, io = homedir, /new)
       widget_control, event.top, get_uvalue = top_uvalue
-; portrait ou landscape ???
+; portrait or landscape ???
       options = extractatt(top_uvalue, 'options')   
       optionsflag = extractatt(top_uvalue, 'optionsflag')
       portrait = (optionsflag[where(options EQ 'Portrait/Landscape'), 0])[0]
-; on lit les commandes pour faire un plot
+; We read commands to do a plot
       globalcommand = extractatt(top_uvalue, 'globalcommand')
-; on complete par le premiere et les dernieres lignes du programme
+; We complete by first and last lines of the program
       thisOS = strupcase(strmid(!version.os_family, 0, 3))
       CASE thisOS of
@@ -163,5 +194,5 @@
                        , 'return' $
                        , 'end']
-; on les ecrit dans un programme
+; We write it in a program
       putfile, filename, globalcommand
     END
@@ -171,7 +202,7 @@
         return
       ENDIF
-; on recupere le nom du fichier
+; We recuperate the name of the file
       filename = xquestion('dans quel fichier bianire voulez vous sauver le widget ?', 'xxx_widget.dat')
-; on le complete par un .dat
+; We complete it by a .dat
       if rstrpos(filename, '.dat') NE strlen(filename)-4 then filename = filename+'.dat'
       filename = isafile(file = filename, io = homedir, /new)
@@ -195,10 +226,10 @@
       key_portrait = 1-optionsflag[index, 0]
       (*top_uvalue[1, findline(top_uvalue, 'optionsflag')])[index, *] = key_portrait
-; fenetre separee ou fenetre collee au widget ?
+; Separated windows or windows stuck to the widget?
       if widget_info(event.top, find_by_uname = 'graph') EQ 0 then BEGIN
-; on tue la fenetre
+; We delete the window
         graphid = extractatt(top_uvalue, 'graphid')
         widget_control, widget_info(graphid, /parent), /destroy
-; on la recree
+; We recreate it.
         basegraph = widget_base(title = 'xxx window',  group_leader = event.top, uvalue = event.top,  uname = 'basegraph')
         windsize = givewindowsize()
@@ -209,17 +240,17 @@
         widget_control, basegraph, /realize
         xmanager, 'xxx', basegraph, /no_block
-; on redessine ce qu''il y avait dedans
-; on recupere la liste des instructions
+; We redraw what their were into it
+; We recuperate the list of instructions
         globalcommand = extractatt(top_uvalue, 'globalcommand')
-; on complete par le premiere et les dernieres lignes du programme
+; We complete by first and last lines of the program
         createpro, globalcommand, filename = myuniquetmpdir + 'xxx2ps.pro' $
                    , KWDLIST = ', NOERASE = noerase, POSTSCRIPT = postscript, PORTRAIT = portrait, LANDSCAPE = landscape' $
                    , KWDUSED = ', /noerase, PORTRAIT = portrait'
-; on reattribue l''element graphid de la top_uvalue
+; We reattribute the graphic element of the top_value
         *top_uvalue[1, findline(top_uvalue, 'graphid')] = graphid
       ENDIF ELSE BEGIN
         extra = extractatt(top_uvalue, 'extra')
         xxx, CALLERWIDID = event.top, /redraw, _extra = extra
-        widget_control, event.top, /destroy ;on ferme le widget
+        widget_control, event.top, /destroy ;We shut the widget
       ENDELSE
     end
@@ -230,7 +261,7 @@
       flags = extractatt(top_uvalue, 'optionsflag')
       index = where(options EQ 'Overlay')
-; on change le flag sur Longitude / x index
+; We change the flag on Longitude / x index
       flag = 1-flags[index, numdessinin] & flag = flag[0]
-; on le reeatribue
+; We reattribute it
       (*top_uvalue[1, findline(top_uvalue, 'optionsflag')])[index, numdessinin] = flag
     end
@@ -241,7 +272,7 @@
       flags = extractatt(top_uvalue, 'optionsflag')
       index = where(options EQ 'Vecteur')
-; on change le flag sur Longitude / x index
+; We change the flag on Longitude / x index
       flag = 1-flags[index, numdessinin] & flag = flag[0]
-; on le reeatribue
+; We reattribute it
       (*top_uvalue[1, findline(top_uvalue, 'optionsflag')])[index, numdessinin] = flag
     end
@@ -252,12 +283,12 @@
       flags = extractatt(top_uvalue, 'optionsflag')
       index = where(options EQ 'Longitude / x index')
-; on change le flag sur Longitude / x index
+; We change the flag on Longitude / x index
       flag = 1-flags[index, numdessinin] & flag = flag[0]
-; on le reeatribue
+; We reattribute it
       (*top_uvalue[1, findline(top_uvalue, 'optionsflag')])[index, numdessinin] = flag
-; maintenant on va changer les sliders definissant la boxzoom
+; Now we will change sliders defining the boxzoom
       domainid = widget_info(event.top, find_by_uname = 'domain')
       boxzoom = (extractatt(top_uvalue, 'domaines'))[*, numdessinin]
-; on veut retrouver le type de grille qui est utilisee
+; We want to find the type of grid which is used
       currentfile = extractatt(top_uvalue, 'currentfile')
       listgrid = (*(extractatt(top_uvalue, 'fileparameters'))[currentfile]).listgrid
@@ -268,12 +299,10 @@
       vargrid = strupcase(listgrid[indexvar])
       if flag EQ 0 then BEGIN   ; longitudes
-; on fait un domdef pour retrouver le lon1 lon2 correspondant a la
-; boxzoom definie sur le widget... 
+; We do a domdef to find the lon1 lon2 corresponding to the boxzoom defined on the widget...
         domdef, boxzoom, gridtype = vargrid, /xindex $
                 , yindex = (flags[where(options EQ 'Latitude / y index'), numdessinin])[0]
         widget_control, domainid, set_value = [lon1, lon2, boxzoom[2:3]]
       ENDIF ELSE BEGIN          ; xindex
-; maintenant ion veut retrouver firstx, lastx correspondant a la
-; boxzoom definie sur le widget...
+; now we want to find firstx, lastx corresponding to the boxzoom defined on the widget...
         domdef, boxzoom, gridtype = vargrid $
                 , yindex = (flags[where(options EQ 'Latitude / y index'), numdessinin])[0]
@@ -281,5 +310,5 @@
         widget_control, domainid, set_value = [firstx, lastx, boxzoom[2:3]]
       ENDELSE
-; on met a jour la top_uvalue
+; We update the top_uvalue
       widget_control, domainid, get_value = boxzoom
       (*top_uvalue[1, findline(top_uvalue, 'domaines')])[*, numdessinin] = boxzoom
@@ -291,12 +320,12 @@
       flags = extractatt(top_uvalue, 'optionsflag')
       index = where(options EQ 'Latitude / y index')
-; on change le flag sur Latitude / y index
+; We change the flag on Latitude / y index
       flag = 1-flags[index, numdessinin] & flag = flag[0]
-; on le reeatribue
+; We reattribute it
       (*top_uvalue[1, findline(top_uvalue, 'optionsflag')])[index, numdessinin] = flag
-; maintenant on va changer les sliders definissant la boxzoom
+; Now we will change sliders defining the boxzoom
       domainid = widget_info(event.top, find_by_uname = 'domain')
       boxzoom = (extractatt(top_uvalue, 'domaines'))[*, numdessinin]
-; on veut retrouver le type de grille qui est utilisee
+; We want to find the type of grid which is used
       currentfile = extractatt(top_uvalue, 'currentfile')
       listgrid = (*(extractatt(top_uvalue, 'fileparameters'))[currentfile]).listgrid
@@ -307,12 +336,10 @@
       vargrid = strupcase(listgrid[indexvar])
       if flag EQ 0 then BEGIN   ; latitudes
-; on fait un domdef pour retrouver le lat1 lat2 correspondant a la
-; boxzoom definie sur le widget... 
+; We do a domdef to find the lat1 lat2 corresponding to the boxzoom defined on the widget...
         domdef, boxzoom, gridtype = vargrid, /yindex $
                 , xindex = (flags[where(options EQ 'Longitude / x index'), numdessinin])[0]
         widget_control, domainid, set_value = [boxzoom[0:1], lat1, lat2]
       ENDIF ELSE BEGIN          ; yindex
-; maintenant ion veut retrouver firsty, lasty correspondant a la
-; boxzoom definie sur le widget...
+; now we want to find firsty, lasty corresponding to the boxzoom defined on the widget...
         domdef, boxzoom, gridtype = vargrid $
                 , xindex = (flags[where(options EQ 'Longitude / x index'), numdessinin])[0]
@@ -320,5 +347,5 @@
         widget_control, domainid, set_value = [boxzoom[0:1], firsty, lasty]
       ENDELSE
-; on met a jour la top_uvalue
+; We update the top_uvalue
       widget_control, domainid, get_value = boxzoom
       (*top_uvalue[1, findline(top_uvalue, 'domaines')])[*, numdessinin] = boxzoom
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_bgroup.pro	(revision 150)
@@ -1,134 +1,2 @@
-; $Id$
-;
-; Copyright (c) 1992-2005, Research Systems, Inc.  All rights reserved.
-;   Unauthorized reproduction prohibited.
-;+
-; NAME:
-;   CW_BGROUP
-;
-; PURPOSE:
-;   CW_BGROUP is a compound widget that simplifies creating
-;   a base of buttons. It handles the details of creating the
-;   proper base (standard, exclusive, or non-exclusive) and filling
-;   in the desired buttons. Events for the individual buttons are
-;   handled transparently, and a CW_BGROUP event returned. This
-;   event can return any one of the following:
-;       - The Index of the button within the base.
-;       - The widget ID of the button.
-;       - The name of the button.
-;       - An arbitrary value taken from an array of User values.
-;
-; CATEGORY:
-;   Compound widgets.
-;
-; CALLING SEQUENCE:
-;       Widget = CW_BGROUP(Parent, Names)
-;
-;   To get or set the value of a CW_BGROUP, use the GET_VALUE and
-;   SET_VALUE keywords to WIDGET_CONTROL. The value of a CW_BGROUP
-;   is:
-;
-;       -----------------------------------------------
-;       Type        Value
-;       -----------------------------------------------
-;       normal      None
-;       exclusive       Index of currently set button
-;       non-exclusive   Vector indicating the position
-;               of each button (1-set, 0-unset)
-;       -----------------------------------------------
-;
-;
-; INPUTS:
-;       Parent:     The ID of the parent widget.
-;   Names:      A string array, containing one string per button,
-;           giving the name of each button.
-;
-; KEYWORD PARAMETERS:
-;
-;   BUTTON_UVALUE:  An array of user values to be associated with
-;           each button and returned in the event structure.
-;   COLUMN:     Buttons will be arranged in the number of columns
-;           specified by this keyword.
-;   EVENT_FUNCT:    The name of an optional user-supplied event function
-;           for buttons. This function is called with the return
-;           value structure whenever a button is pressed, and
-;           follows the conventions for user-written event
-;           functions.
-;   EXCLUSIVE:  Buttons will be placed in an exclusive base, with
-;           only one button allowed to be selected at a time.
-;   FONT:       The name of the font to be used for the button
-;           titles. If this keyword is not specified, the default
-;           font is used.
-;   FRAME:      Specifies the width of the frame to be drawn around
-;           the base.
-;   IDS:        A named variable into which the button IDs will be
-;           stored, as a longword vector.
-;   LABEL_LEFT: Creates a text label to the left of the buttons.
-;   LABEL_TOP:  Creates a text label above the buttons.
-;   MAP:        If set, the base will be mapped when the widget
-;           is realized (the default).
-;   NONEXCLUSIVE:   Buttons will be placed in an non-exclusive base.
-;           The buttons will be independent.
-;   NO_RELEASE: If set, button release events will not be returned.
-;   RETURN_ID:  If set, the VALUE field of returned events will be
-;           the widget ID of the button.
-;   RETURN_INDEX:   If set, the VALUE field of returned events will be
-;           the zero-based index of the button within the base.
-;           THIS IS THE DEFAULT.
-;   RETURN_NAME:    If set, the VALUE field of returned events will be
-;           the name of the button within the base.
-;   ROW:        Buttons will be arranged in the number of rows
-;           specified by this keyword.
-;   SCROLL:     If set, the base will include scroll bars to allow
-;           viewing a large base through a smaller viewport.
-;   SET_VALUE:  The initial value of the buttons. This is equivalent
-;           to the later statement:
-;
-;           WIDGET_CONTROL, widget, set_value=value
-;
-;   SPACE:      The space, in pixels, to be left around the edges
-;           of a row or column major base. This keyword is
-;           ignored if EXCLUSIVE or NONEXCLUSIVE are specified.
-;   UVALUE:     The user value to be associated with the widget.
-;   UNAME:      The user name to be associated with the widget.
-;   XOFFSET:    The X offset of the widget relative to its parent.
-;   XPAD:       The horizontal space, in pixels, between children
-;           of a row or column major base. Ignored if EXCLUSIVE
-;           or NONEXCLUSIVE are specified.
-;   XSIZE:      The width of the base.
-;   X_SCROLL_SIZE:  The width of the viewport if SCROLL is specified.
-;   YOFFSET:    The Y offset of the widget relative to its parent.
-;   YPAD:       The vertical space, in pixels, between children of
-;           a row or column major base. Ignored if EXCLUSIVE
-;           or NONEXCLUSIVE are specified.
-;   YSIZE:      The height of the base.
-;   Y_SCROLL_SIZE:  The height of the viewport if SCROLL is specified.
-;
-; OUTPUTS:
-;       The ID of the created widget is returned.
-;
-; SIDE EFFECTS:
-;   This widget generates event structures with the following definition:
-;
-;       event = { ID:0L, TOP:0L, HANDLER:0L, SELECT:0, VALUE:0 }
-;
-;   The SELECT field is passed through from the button event. VALUE is
-;   either the INDEX, ID, NAME, or BUTTON_UVALUE of the button,
-;   depending on how the widget was created.
-;
-; RESTRICTIONS:
-;   Only buttons with textual names are handled by this widget.
-;   Bitmaps are not understood.
-;
-; MODIFICATION HISTORY:
-;   15 June 1992, AB
-;   7 April 1993, AB, Removed state caching.
-;   6 Oct. 1994, KDB, Font keyword is not applied to the label.
-;       10 FEB 1995, DJC  fixed bad bug in event procedure, getting
-;                         id of stash widget.
-;   11 April 1995, AB Removed Motif special cases.
-;-
-
-
 pro CW_BGROUP_SETV, id, value
   compile_opt hidden, idl2, strictarrsubs
@@ -224,4 +92,173 @@
 
 
+
+
+;
+;+
+; @file_comments
+; CW_BGROUP is a compound widget that simplifies creating
+; a base of buttons. It handles the details of creating the
+; proper base (standard, exclusive, or non-exclusive) and filling
+; in the desired buttons. Events for the individual buttons are
+; handled transparently, and a CW_BGROUP event returned. This
+; event can return any one of the following:
+;      - The Index of the button within the base.
+;      - The widget ID of the button.
+;      - The name of the button.
+;      - An arbitrary value taken from an array of User values.
+;
+; @categories
+; Compound widgets.
+;
+; @param PARENT {in}{required}
+; The ID of the parent widget.
+; 
+; @param NAMES
+; A string array, containing one string per button,
+; giving the name of each button.
+;
+; @keyword BUTTON_UVALUE
+; An array of user values to be associated with
+; each button and returned in the event structure.
+; 
+; @keyword COLUMN
+; Buttons will be arranged in the number of columns
+; specified by this keyword.
+; 
+; @keyword EVENT_FUNCT
+; The name of an optional user-supplied event function
+; for buttons. This function is called with the return
+; value structure whenever a button is pressed, and
+; follows the conventions for user-written event functions.
+; 
+; @keyword EXCLUSIVE
+; Buttons will be placed in an exclusive base, with
+; only one button allowed to be selected at a time.
+; 
+; @keyword FONT
+; The name of the font to be used for the button
+; titles. If this keyword is not specified, the default
+; font is used.
+; 
+; @keyword FRAME
+; Specifies the width of the frame to be drawn around the base.
+; 
+; @keyword IDS
+; A named variable into which the button IDs will be
+; stored, as a longword vector.
+; 
+; @keyword LABEL_LEFT
+; Creates a text label to the left of the buttons.
+; 
+; @keyword LABEL_TOP
+; Creates a text label above the buttons.
+; 
+; @keyword MAP
+; If set, the base will be mapped when the widget
+; is realized (the default).
+; 
+; @keyword NONEXCLUSIVE
+; Buttons will be placed in an non-exclusive base.
+; The buttons will be independent.
+; 
+; @keyword NO_RELEASE
+; If set, button release events will not be returned.
+; 
+; @keyword RETURN_ID
+; If set, the VALUE field of returned events will be
+; the widget ID of the button.
+; 
+; @keyword RETURN_INDEX
+; If set, the VALUE field of returned events will be
+; the zero-based index of the button within the base.
+; THIS IS THE DEFAULT.
+; 
+; @keyword RETURN_NAME
+; If set, the VALUE field of returned events will be
+; the name of the button within the base.
+; 
+; @keyword ROW
+; Buttons will be arranged in the number of rows
+; specified by this keyword.
+; 
+; @keyword SCROLL
+; If set, the base will include scroll bars to allow
+; viewing a large base through a smaller viewport.
+; 
+; @keyword SET_VALUE
+; The initial value of the buttons. This is equivalent
+; to the later statement:
+;
+; WIDGET_CONTROL, widget, set_value=value
+;
+; @keyword SPACE
+; The space, in pixels, to be left around the edges
+; of a row or column major base. This keyword is
+; ignored if EXCLUSIVE or NONEXCLUSIVE are specified.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+; 
+; @keyword XOFFSET
+; The X offset of the widget relative to its parent.
+; 
+; @keyword XPAD
+; The horizontal space, in pixels, between children
+; of a row or column major base. Ignored if EXCLUSIVE
+; or NONEXCLUSIVE are specified.
+; 
+; @keyword XSIZE
+; The width of the base.
+; @keyword X_SCROLL_SIZE
+; The width of the viewport if SCROLL is specified.
+; 
+; @keyword YOFFSET
+; The Y offset of the widget relative to its parent.
+; 
+; @keyword YPAD
+; The vertical space, in pixels, between children of
+; a row or column major base. Ignored if EXCLUSIVE
+; or NONEXCLUSIVE are specified.
+; 
+; @keyword YSIZE
+; The height of the base.
+; 
+; @keyword Y_SCROLL_SIZE
+; The height of the viewport if SCROLL is specified.
+;
+; @returns
+; The ID of the created widget is returned.
+;
+; @restrictions
+; This widget generates event structures with the following definition:
+;
+;       event = { ID:0L, TOP:0L, HANDLER:0L, SELECT:0, VALUE:0 }
+;
+; The SELECT field is passed through from the button event. VALUE is
+; either the INDEX, ID, NAME, or BUTTON_UVALUE of the button,
+; depending on how the widget was created.
+;
+; @restrictions
+; Only buttons with textual names are handled by this widget.
+; Bitmaps are not understood.
+;
+; @history
+; 15 June 1992, AB
+; 7 April 1993, AB, Removed state caching.
+; 6 Oct. 1994, KDB, Font keyword is not applied to the label.
+; 10 FEB 1995, DJC  fixed bad bug in event procedure, getting
+;                         id of stash widget.
+; 11 April 1995, AB Removed Motif special cases.
+;
+; Copyright (c) 1992-2005, Research Systems, Inc.  All rights reserved.
+;   Unauthorized reproduction prohibited.
+;
+; @version
+; $Id$
+;
+;-
 
 
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_calendar.pro	(revision 150)
@@ -276,4 +276,57 @@
 ;----------------------------------------------------------------------
 ;----------------------------------------------------------------------
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @param CALENDAR
+;
+;
+; @param JDATE0
+;
+; 
+; @keyword CALTYPE
+; 
+; 
+; @keyword FAKECAL
+;
+; 
+; @keyword UVALUE
+;
+; 
+; @keyword UNAME
+;
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb
+; 
+;-
 FUNCTION cw_calendar, parent, calendar, jdate0, CALTYPE = CALTYPE, FAKECAL = fakecal, UVALUE = uvalue, UNAME = uname, _extra = ex
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_combobox_pm.pro	(revision 150)
@@ -1,100 +1,2 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
-;+
-; NAME: cw_combobox_pm
-;
-; PURPOSE: widget equivalent a WIDGET_COMBOBOX sauf qu'en plus on
-; dispose de 2 bouttons + et - pour deplacer le widget de +/- 1.
-;
-; CATEGORY: compound widget (aide a l''ecriture des widgets)
-;
-; CALLING SEQUENCE: id=cw_combobox_pm(parent)
-; 
-; INPUTS:
-;         Parent: The widget ID of the parent widget.
-;
-; KEYWORD PARAMETERS:tous ceux de WIDGET_COMBOBOX
-;
-; OUTPUTS:
-;         The returned value of this function is the widget ID of the
-;         newly-created animation widget.
-;
-; COMMON BLOCKS: none
-;
-; SIDE EFFECTS:
-;
-;     Widget Events Returned by Combobox Widgets
-;
-;   Pressing the mouse button while the mouse cursor is over an
-;   element of a combobox widget causes the widget to change the label
-;   on the combobox button and to generate an event. The appearance of
-;   any previously selected element is restored to normal at the same
-;   time. The event structure returned by the WIDGET_EVENT function is
-;   defined by the following statement:
-;
-;   { CW_COMBOBOX_PM, ID:0L, TOP:0L, HANDLER:0L, INDEX:0L, OUT:0 }
-;
-;   The first three fields are the standard fields found in every
-;   widget event.
-;   INDEX returns the index of the selected item. This can be used to
-;   index the array of names originally used to set the widget''s
-;   value
-;   OUT:c''est un entier qui peut prendre 3 valeurs:
-;       1 : si on appuie sur + alors que l''index est deja aux max. rq:
-;       ds ce cas l''index reste au max
-;       -1: si on appuie sur - alors que l''index est deja aux min. rq:
-;       ds ce cas l''index reste au min
-;       0 : ds les autres cas!
-;
-;   Keywords to WIDGET_CONTROL
-;
-;   A number of keywords to the WIDGET_CONTROL procedure affect the
-;   behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE.
-;       1) GET_VALUE
-;   widget_control,wid_id,get_value=resultat
-;   retourne ds la variable resultat une structure de 3 elements dont
-;   les noms sont inspires des mots cles que l''on peut passer a
-;   widget_control qd on utilise WIDGET_COMBOBOX:
-;            COMBOBOX_NUMBER: the number of elements currently
-;            contained in the specified combobox widget.
-;            COMBOBOX_SELECT: the zero-based number of the
-;            currently-selected element (i.e., the currently-displayed
-;            element) in the specified combobox widget.
-;            DYNAMIC_RESIZE: a True value (1) if the widget specified
-;            by Widget_ID is a button, combobox, or label widget that
-;            has had its DYNAMIC_RESIZE attribute set. Otherwise,
-;            False (0) is returned.
-;       2) SET_VALUE
-;   widget_control,wid_id,set_value=impose
-;   permet de modifier l''etat de la combobox comme on peut le faire
-;   pour WIDGET_COMBOBOX Impose peut etre:
-;       a) The contents of the list widget (string or string array)
-;       b) une structure qui peut avoir comme elements (de 1 a 3):
-;            DYNAMIC_RESIZE:Set this keyword to activate (if set to 1)
-;            or deactivate (if set to 0) dynamic resizing of the
-;            specified CW_COMBOBOX_PM widget (see the documentation
-;            for the DYNAMIC_RESIZE keyword to WIDGET_COMBOBOX
-;            procedure for more information about dynamic widget
-;            resizing).
-;            COMBOBOX_SELECT:Set this keyword to return the zero-based
-;            number of the currently-selected element (i.e., the
-;            currently-displayed element) in the specified combobox
-;            widget.
-;            VALUE: The contents of the list widget (string or string
-;            array)
-;
-; RESTRICTIONS:
-;
-; EXAMPLE: cf utiliser le programme founit i-dessous: testwid et la
-; procedure associee, testwid_event.
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;                      6/9/1999
-;
-;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 ; testwid, value=strtrim(indgen(10),2)
 ; PRO testwid_event, event
@@ -212,5 +114,118 @@
                   , INDEX:index, STR:cmbbtxt, OUT:out}
 end
-;----------------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;+
+;
+; @file_comments
+; Like WIDGET_COMBOBOX but here, their are 2 buttons + and - to move the widget from +/- 1
+;
+; @categories
+; compound widget
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @keyword COLUMN
+; Buttons will be arranged in the number of columns
+; specified by this keyword.
+; 
+; @keyword ROW
+; Buttons will be arranged in the number of rows
+; specified by this keyword.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+; 
+; @keyword VALUE
+;
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+;
+; @returns
+; The returned value of this function is the widget ID of the
+; newly-created animation widget.
+;
+; @restrictions
+;
+;     Widget Events Returned by Combobox Widgets
+;
+;   Pressing the mouse button while the mouse cursor is over an
+;   element of a combobox widget causes the widget to change the label
+;   on the combobox button and to generate an event. The appearance of
+;   any previously selected element is restored to normal at the same
+;   time. The event structure returned by the WIDGET_EVENT function is
+;   defined by the following statement:
+;
+;   { CW_COMBOBOX_PM, ID:0L, TOP:0L, HANDLER:0L, INDEX:0L, OUT:0 }
+;
+;   The first three fields are the standard fields found in every
+;   widget event.
+;   INDEX returns the index of the selected item. This can be used to
+;   index the array of names originally used to set the widget''s
+;   value
+;   OUT:It is an integer which can take 3 values: 
+;       1 : If we press + when the index is already at the max
+;       Comment: In this case, the index stay at the max
+;       -1: If we press - when the index is already at the min
+;       Comment: In this case, the index stay at the min
+;       0 : In other cases
+;
+;   Keywords to WIDGET_CONTROL
+;
+;   A number of keywords to the WIDGET_CONTROL procedure affect the
+;   behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE.
+;       1) GET_VALUE
+;   widget_control,wid_id,get_value=resultat
+;   Send back, in the result variable, a structure of 3 elements whose 
+;   names are inspired by keywords we can pass at widget_control when
+;   we use WIDGET_COMBOBOX:
+;            COMBOBOX_NUMBER: the number of elements currently
+;            contained in the specified combobox widget.
+;            COMBOBOX_SELECT: the zero-based number of the
+;            currently-selected element (i.e., the currently-displayed
+;            element) in the specified combobox widget.
+;            DYNAMIC_RESIZE: a True value (1) if the widget specified
+;            by Widget_ID is a button, combobox, or label widget that
+;            has had its DYNAMIC_RESIZE attribute set. Otherwise,
+;            False (0) is returned.
+;       2) SET_VALUE
+;   widget_control,wid_id,set_value=impose
+;   Allows to modify the state of the combobox like we can do it for 
+;   WIDGET_COMBOBOX. May impose: 
+;       a) The contents of the list widget (string or string array)
+;       b) A structure which can have for elements (from 1 to 3): 
+;            DYNAMIC_RESIZE:Set this keyword to activate (if set to 1)
+;            or deactivate (if set to 0) dynamic resizing of the
+;            specified CW_COMBOBOX_PM widget (see the documentation
+;            for the DYNAMIC_RESIZE keyword to WIDGET_COMBOBOX
+;            procedure for more information about dynamic widget
+;            resizing).
+;            COMBOBOX_SELECT:Set this keyword to return the zero-based
+;            number of the currently-selected element (i.e., the
+;            currently-displayed element) in the specified combobox
+;            widget.
+;            VALUE: The contents of the list widget (string or string
+;            array)
+;
+; @examples
+; See the program provided above (testwid and the associated procedure, testwid_event).
+;
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;                      6/9/1999
+;
+; @version
+; $Id$
+;
+;-
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
 FUNCTION cw_combobox_pm, parent, VALUE = value, UVALUE = uvalue, UNAME = uname, ROW = row, COLUMN = column, _extra = ex
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_domain.pro	(revision 150)
@@ -53,5 +53,5 @@
    change = changegrid(currentgrid)
 ;------------------------------------------------
-; quel est le type de boxzoom?
+; What is the type of boxzoom ?
    currentplot = (extractatt(top_uvalue, 'smallin'))[2]-1
    options = extractatt(top_uvalue, 'options')   
@@ -63,5 +63,5 @@
     ytype = 'geographic' ELSE ytype = 'index'
 ;------------------------------------------------
-; comment completer la boxzoom?
+; How to complete the boxzoom ?
    IF xtype EQ  'geographic' then begin
       lonn1 = lon1
@@ -114,7 +114,7 @@
    strict = uvalue.strict
 ;
-; les longitudes
-;
-; min et max possible
+; Longitudes
+;
+; Possible min and max
    if xtype EQ 'geographic' then BEGIN
       min = floor(min([glamt,glamf], max = max))
@@ -124,16 +124,16 @@
       max = jpi-1
    ENDELSE
-; les id des widgets
+; widgets's id
    lon1id = widget_info(id,find_by_uname = 'lon1')
    lon2id = widget_info(id,find_by_uname = 'lon2')
-; doit-on changer de type d''axe x: longitude/index
+; Do we have to change the type of x axis: longitude/index
    lonbase = widget_info(id,find_by_uname = 'lonbase')
    widget_control, lonbase,  get_uvalue = lonbase_uvalue
    if lonbase_uvalue.name NE xtype then BEGIN
       widget_control, lonbase, update = 0
-; on casse tout
+; We break everything
       widget_control, lon1id, /destroy
       widget_control, lon2id, /destroy
-; on reconstruit
+; We reconstruct
       lon1id = cw_slider_pm(lonbase,value=min > boxzoom[0] < ((boxzoom[1] < max)-keyword_set(strict)) $
                             , uvalue={name:'lon1', strict:keyword_set(strict)},uname ='lon1' $
@@ -147,18 +147,18 @@
       widget_control, lonbase, update = 1
    ENDIF ELSE BEGIN
-; la nouvelle valeur qu''ils vont avoir
+; The new value  they will have
       cursorvalue1 = min > boxzoom[0] < ((boxzoom[1] < max)-strict)
       cursorvalue2 = ((min > boxzoom[0])+strict) > boxzoom[1] < max
-; on change les bornes des slider
+; We change slider's boundaries
       widget_control, lon1id, set_value = {slider_min:min, slider_max:cursorvalue2-strict}
       widget_control, lon2id, set_value = {slider_min:cursorvalue1+strict, slider_max:max}
-; on attribut la nouvelle valeur
+; We attribute the new value
       widget_control, lon1id , set_value = cursorvalue1
       widget_control, lon2id, set_value = cursorvalue2
    ENDELSE
 ;
-; les latitudes
-;
-; min et max possible
+; Latitudes
+;
+; Possible min and max
    if ytype EQ 'geographic' then begin
       min = floor(min([gphit,gphif], max = max))
@@ -168,5 +168,5 @@
       max = jpj-1
    ENDELSE
-; doit-on changer de type d''axe y: latitude/index
+; Do we have to change the type of y axis: latitude/index
    latbase = widget_info(id,find_by_uname = 'latbase')
    widget_control, latbase,  get_uvalue = latbase_uvalue
@@ -219,6 +219,5 @@
       widget_control, dthlv2id, set_value = {value:strtrim(gdep2, 1)}
    ENDIF ELSE gdep2 = gdep1+1
-; on s''assure que les profs donnees contiennent bien au moins un
-; niveau.
+; We make sure that given depthes contain at least one level.
    if boxzoom[4] GT boxzoom[5] then begin
       rien = boxzoom[4]
@@ -240,9 +239,9 @@
       boxzoom[5] = boxzoom[4]+1
    endif
-; maintenant que les values et les indexes sont definis proprement,
-; on peut les appliquer
+; Now, values and indexes are proprely defined.
+; So we can apply them
    widget_control, dthlv1id, set_value = {combobox_select:indice1}
    widget_control, dthlv2id, set_value = {combobox_select:indice2}
-; controler les min et les max des sliders...
+; control mins and maxs of sliders...
    if indice1 EQ 0 then min1 = 0 ELSE min1 = gdep2[indice1-1]
    max1 = (min1+1) > gdep1[indice2]
@@ -313,5 +312,5 @@
          depth2id = widget_info(event.handler,find_by_uname = 'depth2')
          dthlv2id = widget_info(event.handler,find_by_uname = 'dthlv2')
-; faut-il changer dthlv2 ?
+; Do we have to change dthlv2 ?
          widget_control, event.id, get_value = dthlv1_value
          gdep1 = fix(dthlv1_value.combobox_value)
@@ -319,7 +318,7 @@
          gdep2 = fix(dthlv2_value.combobox_value)
          if dthlv2_value.combobox_index LT event.index then BEGIN
-; on redefinie la valeur de dthlv2id
+; We redefine the dthlv2id's value
             widget_control, dthlv2id, set_value = {combobox_select:event.index}
-; donc on redefinit la valeur et le max du slider 2
+; So we redefine the value and the max of the slider 2
             if event.index EQ jpk-1 then BEGIN 
                max = max([gdept, gdepw])
@@ -329,11 +328,11 @@
             widget_control, depth2id $
              , set_value = {slider_max:max, value:gdep2[event.index]}
-; du coup on redefinie donc le max du slider 1 
+; So we redefine the max of the slider 1
             widget_control, depth1id, set_value = {slider_max:gdep1[event.index]}
          END 
-; on redefinie la valeur et le min du slider depth 1
+; We redefine the value and the min of the slider depth1 
          if event.index EQ 0 then min = 0 ELSE min = gdep1[event.index-1]+1
          widget_control, depth1id, set_value = {slider_min:min, value:gdep1[event.index]}
-; du coup on change aussi la valeur du min du slider depth 2
+; S we change the value of the min of the slider depth 2
          widget_control, depth2id, set_value = {slider_min:gdep1[event.index]+1}
       END
@@ -343,5 +342,5 @@
          depth2id = widget_info(event.handler,find_by_uname = 'depth2')
          dthlv1id = widget_info(event.handler,find_by_uname = 'dthlv1')
-; faut-il changer dthlv1 ?
+; Do we have to change dthlv1 ?
          widget_control, dthlv1id, get_value = dthlv1_value
          gdep1 = fix(dthlv1_value.combobox_value)
@@ -349,14 +348,14 @@
          gdep2 = fix(dthlv2_value.combobox_value)
          if dthlv1_value.combobox_index GT event.index then BEGIN
-; on redefinie la valeur de dthlv1id
+; We redfine the value of dthlv1id
             widget_control, dthlv1id, set_value = {combobox_select:event.index}
-; donc on redefinit la valeur et le min du slider 1
+; So we redefine the value and the min of the slider 1
             if event.index EQ 0 then min = 0 ELSE min = gdep2[event.index-1]
             widget_control, depth1id $
              , set_value = {slider_min:min, value:gdep1[event.index]}
-; du coup on redefinie donc le min du slider 2
+; Se we redefine the min of the slider 2
             widget_control, depth2id, set_value = {slider_min:gdep2[event.index]}
          END 
-; on redefinie la valeur et le max du slider depth 2
+; We redefine the value and the max of the slider depth 2
          if event.index EQ jpk-1 then BEGIN 
             max = max([gdept, gdepw])
@@ -365,5 +364,5 @@
          ENDIF ELSE max = gdep2[event.index+1]-1
          widget_control, depth2id, set_value = {slider_max:max, value:gdep2[event.index]}
-; du coup on change aussi la valeur du max du slider depth 1
+; So we change the value of the max of the slider depth 1
          widget_control, depth1id, set_value = {slider_max:gdep2[event.index]-1}
       END
@@ -372,5 +371,5 @@
          depth2id = widget_info(event.handler,find_by_uname = 'depth2')
          dthlv1id = widget_info(event.handler,find_by_uname = 'dthlv1')
-; doit-on changer dthlv1 ?
+; Do we have to change dthlv1 ?
          widget_control, dthlv1id, get_value = dthlv1_value
          gdep1 = fix(dthlv1_value.combobox_value)
@@ -378,9 +377,9 @@
          indice = indice < (jpk-1)
          if indice NE dthlv1_value.combobox_index then begin
-; on change le min de depth2
+; We change the min of depth2
             widget_control, depth2id, set_value = {slider_min:gdep1[indice]+1}
-; on redefinie la valeur de dthlv1id
+; We redefine the value of dthlv1id
             widget_control, dthlv1id, set_value = {combobox_select:indice}
-; donc on redefinit le min du slider 1
+; So we redefine the min of the slider 1
             if indice EQ 0 then min = 0 ELSE min = gdep1[indice-1]+1
             widget_control, event.id, set_value = {slider_min:min}
@@ -391,5 +390,5 @@
          depth1id = widget_info(event.handler,find_by_uname = 'depth1')
          dthlv2id = widget_info(event.handler,find_by_uname = 'dthlv2')
-; doit-on changer dthlv2 ?
+; Do we have to change dthlv2 ?
          widget_control, dthlv2id, get_value = dthlv2_value
          gdep2 = fix(dthlv2_value.combobox_value)
@@ -397,9 +396,9 @@
          indice = 0 > (indice-1)
          if indice NE dthlv2_value.combobox_index then begin
-; on change le max de depth1
+; We change the min of depth1
             widget_control, depth1id, set_value = {slider_max:gdep2[indice]-1}
-; on redefinie la valeur de dthlv2id
+; We redefine the value of dthlv2id
             widget_control, dthlv2id, set_value = {combobox_select:indice}
-; donc on redefinit le max du slider 2
+; So we redefine the min of the slider 2
             if indice EQ jpk-1 then BEGIN 
                max = max([gdept, gdepw])
@@ -418,4 +417,61 @@
 end
 ;*********************************************************************
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+; 
+; @keyword STRICT
+;
+;
+; @keyword UNZOOM
+;
+;
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb: Documenter
+; 
+;-
 FUNCTION cw_domain, parent, BOXZOOM = boxzoom, STRICT = strict, UVALUE = uvalue, UNAME = uname, UNZOOM = unzoom, _extra = ex
 ;
@@ -426,5 +482,5 @@
 @cm_4data
 ;
-; def de la boxzoom
+; Definition of the boxzoom
   Case N_Elements(Boxzoom) OF
     0:boxzoom = [lon1, lon2, lat1, lat2 $
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_droplist_pm.pro	(revision 150)
@@ -1,100 +1,2 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
-;+
-; NAME: cw_droplist_pm
-;
-; PURPOSE: widget equivalent a WIDGET_DROPLIST sauf qu'en plus on
-; dispose de 2 bouttons + et - pour deplacer le widget de +/- 1.
-;
-; CATEGORY: compound widget (aide a l''ecriture des widgets)
-;
-; CALLING SEQUENCE: id=cw_droplist_pm(parent)
-; 
-; INPUTS:
-;         Parent: The widget ID of the parent widget.
-;
-; KEYWORD PARAMETERS:tous ceux de WIDGET_DROPLIST
-;
-; OUTPUTS:
-;         The returned value of this function is the widget ID of the
-;         newly-created animation widget.
-;
-; COMMON BLOCKS: none
-;
-; SIDE EFFECTS:
-;
-;     Widget Events Returned by Droplist Widgets
-;
-;   Pressing the mouse button while the mouse cursor is over an
-;   element of a droplist widget causes the widget to change the label
-;   on the droplist button and to generate an event. The appearance of
-;   any previously selected element is restored to normal at the same
-;   time. The event structure returned by the WIDGET_EVENT function is
-;   defined by the following statement:
-;
-;   { CW_DROPLIST_PM, ID:0L, TOP:0L, HANDLER:0L, INDEX:0L, OUT:0 }
-;
-;   The first three fields are the standard fields found in every
-;   widget event.
-;   INDEX returns the index of the selected item. This can be used to
-;   index the array of names originally used to set the widget''s
-;   value
-;   OUT:c''est un entier qui peut prendre 3 valeurs:
-;       1 : si on appuie sur + alors que l''index est deja aux max. rq:
-;       ds ce cas l''index reste au max
-;       -1: si on appuie sur - alors que l''index est deja aux min. rq:
-;       ds ce cas l''index reste au min
-;       0 : ds les autres cas!
-;
-;   Keywords to WIDGET_CONTROL
-;
-;   A number of keywords to the WIDGET_CONTROL procedure affect the
-;   behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE.
-;       1) GET_VALUE
-;   widget_control,wid_id,get_value=resultat
-;   retourne ds la variable resultat une structure de 3 elements dont
-;   les noms sont inspires des mots cles que l''on peut passer a
-;   widget_control qd on utilise WIDGET_DROPLIST:
-;            DROPLIST_NUMBER: the number of elements currently
-;            contained in the specified droplist widget.
-;            DROPLIST_SELECT: the zero-based number of the
-;            currently-selected element (i.e., the currently-displayed
-;            element) in the specified droplist widget.
-;            DYNAMIC_RESIZE: a True value (1) if the widget specified
-;            by Widget_ID is a button, droplist, or label widget that
-;            has had its DYNAMIC_RESIZE attribute set. Otherwise,
-;            False (0) is returned.
-;       2) SET_VALUE
-;   widget_control,wid_id,set_value=impose
-;   permet de modifier l''etat de la droplist comme on peut le faire
-;   pour WIDGET_DROPLIST Impose peut etre:
-;       a) The contents of the list widget (string or string array)
-;       b) une structure qui peut avoir comme elements (de 1 a 3):
-;            DYNAMIC_RESIZE:Set this keyword to activate (if set to 1)
-;            or deactivate (if set to 0) dynamic resizing of the
-;            specified CW_DROPLIST_PM widget (see the documentation
-;            for the DYNAMIC_RESIZE keyword to WIDGET_DROPLIST
-;            procedure for more information about dynamic widget
-;            resizing).
-;            DROPLIST_SELECT:Set this keyword to return the zero-based
-;            number of the currently-selected element (i.e., the
-;            currently-displayed element) in the specified droplist
-;            widget.
-;            VALUE: The contents of the list widget (string or string
-;            array)
-;
-; RESTRICTIONS:
-;
-; EXAMPLE: cf utiliser le programme founit i-dessous: testwid et la
-; procedure associee, testwid_event.
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;                      6/9/1999
-;
-;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 ; PRO testwid_event, event
 ; ;   help, event, /STRUCT
@@ -199,4 +101,115 @@
 end
 ;----------------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;+
+;
+; @file_comments
+; Like WIDGET_DROPLIST but here, their are 2 buttons + and - to move the widget from +/- 1
+;
+; @categories
+; compound widget
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @keyword COLUMN
+; Buttons will be arranged in the number of columns
+; specified by this keyword.
+; 
+; @keyword ROW
+; Buttons will be arranged in the number of rows
+; specified by this keyword.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+;
+; @returns
+; The returned value of this function is the widget ID of the
+; newly-created animation widget.
+;
+; @restrictions
+;
+;     Widget Events Returned by Droplist Widgets
+;
+;   Pressing the mouse button while the mouse cursor is over an
+;   element of a droplist widget causes the widget to change the label
+;   on the droplist button and to generate an event. The appearance of
+;   any previously selected element is restored to normal at the same
+;   time. The event structure returned by the WIDGET_EVENT function is
+;   defined by the following statement:
+;
+;   { CW_DROPLIST_PM, ID:0L, TOP:0L, HANDLER:0L, INDEX:0L, OUT:0 }
+;
+;   The first three fields are the standard fields found in every
+;   widget event.
+;   INDEX returns the index of the selected item. This can be used to
+;   index the array of names originally used to set the widget''s
+;   value
+;   OUT:It is an integer which can take 3 values: 
+;       1 : If we press + when the index is already at the max
+;       Comment: In this case, the index stay at the max
+;       -1: If we press - when the index is already at the min
+;       Comment: In this case, the index stay at the min
+;       0 : In other cases
+;
+;   Keywords to WIDGET_CONTROL
+;
+;   A number of keywords to the WIDGET_CONTROL procedure affect the
+;   behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE.
+;       1) GET_VALUE
+;   widget_control,wid_id,get_value=resultat
+;   Send back, in the result variable, a structure of 3 elements whose 
+;   names are inspired by keywords we can pass at widget_control when
+;   we use WIDGET_COMBOBOX:
+;            DROPLIST_NUMBER: the number of elements currently
+;            contained in the specified droplist widget.
+;            DROPLIST_SELECT: the zero-based number of the
+;            currently-selected element (i.e., the currently-displayed
+;            element) in the specified droplist widget.
+;            DYNAMIC_RESIZE: a True value (1) if the widget specified
+;            by Widget_ID is a button, droplist, or label widget that
+;            has had its DYNAMIC_RESIZE attribute set. Otherwise,
+;            False (0) is returned.
+;       2) SET_VALUE
+;   widget_control,wid_id,set_value=impose
+;   permet de modifier l''etat de la droplist comme on peut le faire
+;   pour WIDGET_DROPLIST Impose peut etre:
+;       a) The contents of the list widget (string or string array)
+;       b) A structure which can have for elements (from 1 to 3): 
+;            DYNAMIC_RESIZE:Set this keyword to activate (if set to 1)
+;            or deactivate (if set to 0) dynamic resizing of the
+;            specified CW_DROPLIST_PM widget (see the documentation
+;            for the DYNAMIC_RESIZE keyword to WIDGET_DROPLIST
+;            procedure for more information about dynamic widget
+;            resizing).
+;            DROPLIST_SELECT:Set this keyword to return the zero-based
+;            number of the currently-selected element (i.e., the
+;            currently-displayed element) in the specified droplist
+;            widget.
+;            VALUE: The contents of the list widget (string or string
+;            array)
+;
+; @examples
+; See the program provided above (testwid and the associated procedure, testwid_event).
+;
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;                      6/9/1999
+;
+; @version
+; $Id$
+;
+;-
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
 FUNCTION cw_droplist_pm, parent,UVALUE = uvalue, UNAME = uname, ROW = row, COLUMN = column, _extra = ex
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_pagelayout.pro	(revision 150)
@@ -18,14 +18,14 @@
 ;
 @common
-; si on ne change pas le nombre de colonnes, on sort
+; If we do not change the number of columns, we send
       if uval.name EQ 'column' then $
        if event.index+1 EQ smallin[0] THEN $
        return,{ID:event.handler, TOP:event.top, HANDLER:0L}
-; si on ne change pas le nombre de lignes, on sort
+; If we do not change the number of lines, we send
       if uval.name EQ 'row' then $
        if event.index+1 EQ smallin[1] THEN $
        return,{ID:event.handler, TOP:event.top, HANDLER:0L}
 ;
-; on efface la page
+; We erase the page
 ;      graphid = widget_info(event.top,find_by_uname = 'graph')
       graphid = extractatt(top_uvalue, 'graphid')
@@ -46,5 +46,5 @@
       nbredessin = smallin[0]*smallin[1]
 ;         
-; on remet tout a 0 en ce qui concerne les postscripts
+; We put all back to 0 for postscripts
       createhistory, event.top, smallin
 ;         
@@ -79,4 +79,58 @@
 end
 ;*********************************************************************
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @param SMALL 
+;
+;
+; @keyword COLUMN
+; Buttons will be arranged in the number of columns
+; specified by this keyword.
+; 
+; @keyword ROW
+; Buttons will be arranged in the number of rows
+; specified by this keyword.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+;
+; 
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version
+; $Id$ 
+; 
+; @todo 
+; seb: documenter
+; 
+;-
 FUNCTION cw_pagelayout, parent, small, UVALUE = uvalue, UNAME = uname, UNZOOM = unzoom, COLUMN = column, ROW = row, _extra = ex
 ;------------------------------------------------
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slide_slice.pro	(revision 150)
@@ -109,4 +109,65 @@
 end
 ;--------------------------------------------------------------------------------
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+;
+; @keyword COLUMN
+; Buttons will be arranged in the number of columns
+; specified by this keyword.
+; 
+; @keyword FRAME
+; Specifies the width of the frame to be drawn around the base.
+; 
+; @keyword ROW
+; Buttons will be arranged in the number of rows
+; specified by this keyword.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+; 
+; @todo
+; seb: documenter
+;
+;-
 FUNCTION cw_slide_slice, parent, boxzoom = boxzoom, UVALUE = uvalue, UNAME = uname, FRAME = frame, ROW = row, COLUMN = column, _extra = ex
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_slider_pm.pro	(revision 150)
@@ -1,91 +1,2 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
-;+
-; NAME: cw_slider_pm
-;
-; PURPOSE: widget equivalent a WIDGET_SLIDER sauf qu'en plus on
-; dispose de 2 bouttons + et - pour deplacer le widget de +/- 1.
-;
-; CATEGORY: compound widget (aide a l''ecriture des widgets)
-;
-; CALLING SEQUENCE: id=cw_slider_pm(parent)
-; 
-; INPUTS:
-;         Parent: The widget ID of the parent widget.
-;
-; KEYWORD PARAMETERS:tous ceux de WIDGET_SLIDER
-;
-; OUTPUTS:
-;         The returned value of this function is the widget ID of the
-;         newly-created animation widget.
-;
-; COMMON BLOCKS: none
-;
-; SIDE EFFECTS: 
-;
-;  Widget Events Returned by the CW_SLIDER_PM Widget
-;
-;  Slider widgets generate events when the mouse is used to change
-;  their value. The event structure returned by the WIDGET_EVENT
-;  function is defined by the following statement:
-;
-;  {CW_SLIDER_PM, ID:0L, TOP:0L, HANDLER:0L, VALUE:0L, DRAG:0, OUT:0}
-;
-;  ID is the widget ID of the button generating the event. TOP is the
-;  widget ID of the top level widget containing ID.
-;  HANDLER contains the widget ID of the widget associated with the
-;  handler routine.
-;  VALUE returns the new value of the slider.
-;  DRAG returns integer 1 if the slider event was generated as part of
-;  a drag operation, or zero if the event was generated when the user
-;  had finished positioning the slider. Note that the slider widget
-;  only generates events during the drag operation if the DRAG keyword
-;  is set, and if the application is running under Motif. When the
-;  DRAG keyword is set, the DRAG field can be used to avoid
-;  computationally expensive operations until the user releases the
-;  slider.
-;  OUT:c''est un entier qui peut prendre 3 valeurs:
-;      1 : si on appuie sur + alors que le slider est deja aux max. rq:
-;      ds ce cas le slider reste au max
-;      -1: si on appuie sur - alors que le slider est deja aux min. rq:
-;      ds ce cas le slider reste au min
-;      0 : ds les autres cas!
-;
-;   Keywords to WIDGET_CONTROL
-;
-;   A number of keywords to the WIDGET_CONTROL procedure affect the
-;   behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE.
-;       1) GET_VALUE
-;   widget_control,wid_id,get_value=resultat
-;   retourne ds la variable resultat une structure de 2 elements dont
-;   les noms sont inspires des mots cles que l''on peut passer a
-;   widget_control qd on utilise WIDGET_SLIDER:
-;            VALUE:the value setting of the widget
-;            SLIDER_MIN_MAX: a 2 elements array: The minimum and the
-;            maximum value of the range encompassed by the slider
-;       2) SET_VALUE
-;   widget_control,wid_id,set_value=impose
-;   permet de modifier l''etat de la slider bar comme on peut le faire
-;   pour WIDGET_SLIDER. Impose peut etre:
-;       a) un entier: donne la nouvelle  position of the slider.
-;       b) une structure qui peut avoir comme elements (de 1 a 3):
-;            VALUE:un entier qui donne la nouvelle  position of the slider.
-;            SLIDER_MIN:Set to a new minimum value for the specified
-;            slider widget.
-;            SLIDER_MAX:Set to a new minimum value for the specified
-;            slider widget.
-;
-; RESTRICTIONS:
-;
-; EXAMPLE: cf utiliser le programme founit i-dessous: testwid et la
-; procedure associee, testwid_event.
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;                      5/9/1999
-;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 ; PRO testwid_event, event
 ; ;   help, event, /STRUCT
@@ -249,4 +160,115 @@
 end
 ;----------------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;+
+;
+; @file_comments
+; Like WIDGET_SLIDER but here, their are 2 buttons + and - to move the widget from +/- 1
+;
+; @categories
+; compound widget
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+; 
+; @keyword VALUE
+;
+;
+; @keyword MAXIMUM
+; 
+; 
+; @keyword MINIMUM
+;
+; 
+; @keyword STRMINLEN
+;
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+;
+; @returns
+; The returned value of this function is the widget ID of the
+; newly-created animation widget.
+;
+; @restrictions
+;
+;  Widget Events Returned by the CW_SLIDER_PM Widget
+;
+;  Slider widgets generate events when the mouse is used to change
+;  their value. The event structure returned by the WIDGET_EVENT
+;  function is defined by the following statement:
+;
+;  {CW_SLIDER_PM, ID:0L, TOP:0L, HANDLER:0L, VALUE:0L, DRAG:0, OUT:0}
+;
+;  ID is the widget ID of the button generating the event. TOP is the
+;  widget ID of the top level widget containing ID.
+;  HANDLER contains the widget ID of the widget associated with the
+;  handler routine.
+;  VALUE returns the new value of the slider.
+;  DRAG returns integer 1 if the slider event was generated as part of
+;  a drag operation, or zero if the event was generated when the user
+;  had finished positioning the slider. Note that the slider widget
+;  only generates events during the drag operation if the DRAG keyword
+;  is set, and if the application is running under Motif. When the
+;  DRAG keyword is set, the DRAG field can be used to avoid
+;  computationally expensive operations until the user releases the
+;  slider.
+;  OUT:It is an integer which can take 3 values: 
+;       1 : If we press + when the index is already at the max
+;       Comment: In this case, the index stay at the max
+;       -1: If we press - when the index is already at the min
+;       Comment: In this case, the index stay at the min
+;       0 : In other cases
+;
+;   Keywords to WIDGET_CONTROL
+;
+;   A number of keywords to the WIDGET_CONTROL procedure affect the
+;   behavior of cw_slider_pm widget: GET_VALUE and SET_VALUE.
+;       1) GET_VALUE
+;   widget_control,wid_id,get_value=resultat
+;   retourne ds la variable resultat une structure de 2 elements dont
+;   les noms sont inspires des mots cles que l''on peut passer a
+;   widget_control qd on utilise WIDGET_SLIDER:
+;            VALUE:the value setting of the widget
+;            SLIDER_MIN_MAX: a 2 elements array: The minimum and the
+;            maximum value of the range encompassed by the slider
+;       2) SET_VALUE
+;   widget_control,wid_id,set_value=impose
+;   Allows to modify the state of the combobox like we can do it for 
+;   WIDGET_COMBOBOX. May impose: 
+;       a) un entier: donne la nouvelle  position of the slider.
+;       b) A structure which can have for elements (from 1 to 3): 
+;            VALUE: an integer which give the new position of the slider
+;            SLIDER_MIN:Set to a new minimum value for the specified
+;            slider widget.
+;            SLIDER_MAX:Set to a new minimum value for the specified
+;            slider widget.
+;
+;
+; @examples
+; See the program provided above (testwid and the associated procedure, testwid_event).
+;
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;                      5/9/1999
+;
+; @version
+; $Id$
+;
+; @todo
+; seb: documenter
+;
+;-
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
 FUNCTION cw_slider_pm, parent, MAXIMUM = maximum, MINIMUM = minimum $
                        , STRMINLEN = strminlen, VALUE = value, UVALUE = uvalue $
Index: trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/COMPOUND_WIDGET/cw_specifie.pro	(revision 150)
@@ -72,6 +72,5 @@
     'default':BEGIN 
 ;---------------
-; on trouve le nom de la variable:
-;---------------
+; We find the name of the variable: 
       vlstid = widget_info(event.top, find_by_uname = 'varlist')
       fieldname = widget_info(vlstid, /combobox_gettext)
@@ -94,4 +93,60 @@
 ;*****************************************************
 ;*****************************************************
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @keyword COLUMN
+; Buttons will be arranged in the number of columns
+; specified by this keyword.
+; 
+; @keyword ROW
+; Buttons will be arranged in the number of rows
+; specified by this keyword.
+; 
+; @keyword UVALUE
+; The user value to be associated with the widget.
+; 
+; @keyword UNAME
+; The user name to be associated with the widget.
+;
+; @keyword FRAME
+;
+;
+; @keyword FORXXX
+;
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+;
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $ID$
+;
+; @todo
+; seb: documenter
+; 
+;-
 FUNCTION cw_specifie, parent, ROW = row, COLUMN = column, UVALUE = uvalue, UNAME = uname, FRAME = frame, FORXXX = forxxx, _extra = ex
 ; cheking exclusive keywords
@@ -135,6 +190,6 @@
 
 
-; widget text contennant les autres mots cles passe ds top_uvalue.exextra
-; en reste-t-il? si oui, il faut les mettres sous forme de string
+; widget text containig other keywords pass into top_uvalue.exextra
+; Does it remain some? If yes, we have to put them as string
    
    rien = widget_text(base, value = '  ', /editable, uname = 'autres', uvalue = 'autres', xsize = 54, ysize = 3, yoffset = 65, /wrap, /no_newline)
Index: trunk/SRC/ToBeReviewed/WIDGET/findtopid.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/findtopid.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/findtopid.pro	(revision 150)
@@ -3,39 +3,35 @@
 ;------------------------------------------------------------
 ;+
-; NAME: findtopid
 ;
-; PURPOSE: retrouve a partir d''un Id de widget l'Id du widget qui est
+; @file_comments
+; Find, from an Id of widget, the Id of the widget which is 
 ; "the top-level base" (i.e., it has no parent)
 ;
-; CATEGORY: aide pour les widgets
-;
-; CALLING SEQUENCE: res=findtopid(Widget_ID)
+; categories
+; widget
 ; 
-; INPUTS: Widget_ID: this argument should be the widget ID of the
+; @param WIDGET_ID
+; This argument should be the widget ID of the
 ; widget for which information is desired.
 ;
-; KEYWORD PARAMETERS:
+; @returns
+; The Id of the widget which is "the top-level base"
 ;
-; OUTPUTS: l'Id du widget qui est "the top-level base"
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;                      22/9/1999
 ;
-; COMMON BLOCKS:
+; @version
+; $Id$
 ;
-; SIDE EFFECTS: 
-;
-; RESTRICTIONS:
-;
-; EXAMPLE:
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;                      22/9/1999
 ;-
 ;------------------------------------------------------------
 ;------------------------------------------------------------
 ;------------------------------------------------------------
-FUNCTION findtopid,  identite
+FUNCTION findtopid,  WIDGET_ID
 ;
   compile_opt idl2, strictarrsubs
 ;
-   id = long(identite)
+   id = long(WIDGET_ID)
 ;    exist = widget_info(id, /managed)
 ;    if exist EQ 0 then return,  -1
Index: trunk/SRC/ToBeReviewed/WIDGET/slec.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/slec.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/slec.pro	(revision 150)
@@ -1,2 +1,60 @@
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @param NAME
+;
+;
+; @param DEBUT
+;
+;
+; @param FIN
+;
+;
+; @param NOMEXP
+;
+; 
+; @keyword PARENT {in}{required}
+; The widget ID of the parent widget.
+;
+; @keyword BOXZOOM
+; Vector indicating the geographic zone on which we want to cut the map. 
+; If BOXZOOM has : 
+;   1 element : The extraction is made on [lon1, lon2, lat1, lat2, 0.,boxzoom[0]]
+;   2 elements: The extraction is made on [lon1, lon2, lat1, lat2, boxzoom[0],boxzoom[1]]
+;   4 elements: The extraction is made on [Boxzoom, 0, max([gdept, gdepw])]
+;   5 elements: The extraction is made on [Boxzoom[0:3], 0, Boxzoom[4]]
+;   6 elements: The extraction is made on Boxzoom 
+; Where lon1, lon2,lat1,lat2 are global variables defined at the last domdef!
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; 
+; @returns
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; Seb: documenter
+;
+;-
 FUNCTION slec,name,debut,fin, nomexp, PARENT = parent, BOXZOOM=boxzoom, _EXTRA = ex
 ;---------------------------------------------------------
Index: trunk/SRC/ToBeReviewed/WIDGET/xnotice.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/xnotice.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/xnotice.pro	(revision 150)
@@ -3,35 +3,38 @@
 ;------------------------------------------------------------
 ;+
-; NAME:xnotice
 ;
-; PURPOSE:cree un widget avec du texte au milieu de la fenetre.
+; @file_comments
+; Create a widget with some text at the middle of the window
 ;
-; CATEGORY:information
+; @categories
+; Information
+; 
+; @param TEXT {in}{required}
+; it is a string or a vector of string. If it is a scalar, we 
+; look for the line separator !C to create a text with several lines.
 ;
-; CALLING SEQUENCE:widgetid=xnotice(text)
-; 
-; INPUTS:text: un string ou un vecteur de string. Si c''est un
-; scalaire on cherche le separateur de ligne !C pour creer un texte a
-; plusieurs lignes.
+; @keyword CHKWIDGET
+; Force to verify that they are some active widget to create a widget, 
+; otherwise print at the prompt
 ;
-; KEYWORD PARAMETERS:chkwidget: oblige a verifier qu''il y a des
-; widgets actif pour creer un widget, sinon imprime au prompt
+; @returns
+; The identity of the created widget
 ;
-; OUTPUTS:lidentite du widget cree
-;
-; COMMON BLOCKS
-;
-; SIDE EFFECTS:ne fait pas appelle a xmanager -> ne cree aucun event!
-; il faut detruire ce widget a la main:
+; @restrictions 
+; It do not call xmanager -> It do not create any event! 
+; We have to delete this widget manuelly:
 ; widget_control, widgetid, /destroy
 ;
-; RESTRICTIONS:
-;
-; EXAMPLE:
+; @examples
 ;    IDL> id=xnotice('ca marche !C ou pas?')
 ;    IDL> widget_control, id, /destroy
 ;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
 ;                      2000 3 17
+;
+; @version
+; $Id$
+;
 ;-
 ;------------------------------------------------------------
@@ -40,5 +43,5 @@
 FUNCTION xnotice, text, CHKWIDGET = chkwidget
 ;
-; on separe le text en differentes lignes (separees par !C) si ce
+; We separate the text in different lines (separated by !C) if it is not done yet...
 ; n''est pas deja fait...
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/xquestion.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/xquestion.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/xquestion.pro	(revision 150)
@@ -1,55 +1,2 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
-;+
-; NAME:xquestion
-;
-; PURPOSE: a small widget who ask a question and give an answer.
-;          WARNING: For a binary question with yes/no answer use
-;                   DIALOG_MESSAGE.
-;
-; CATEGORY: widget
-;
-; CALLING SEQUENCE: answer = xquestion(question[,proposedanswer])
-; 
-; INPUTS:
-;        question: a scalar string or a array of string. If this
-;        argument is set to :
-;          + an array of strings: each array element is
-;            displayed as a separate line of text.
-;          + a scalar string: we are looking for the "separate line
-;          character" '!C'
-;
-;        proposedanswer: a string proposing a answer
-;
-; KEYWORD PARAMETERS: those from WIDGET_BASE and WIDGET_TEXT
-;
-;        /CHKWIDGET: active this keyword if you whant that xquestion
-;        check if managed widget are present. If not, xquestion do not
-;        open a widget but print the question in the IDL window. 
-;
-; OUTPUTS:
-;        answer: a string
-;
-; COMMON BLOCKS:
-;        none (we use a "false widget")
-;
-; SIDE EFFECTS:
-;        The function does not return to its caller until the user
-;        press "Enter" key in the widget.
-;
-; RESTRICTIONS:
-;
-; EXAMPLE:
-;
-;        IDL> help, xquestion('Postscript name')
-;        <Expression>    STRING    = 'toto.ps'
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;                      13/10/1999
-;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 ;-------------------------------------------------------------------------
 pro xquestion_event, event
@@ -68,4 +15,59 @@
 end
 ;-------------------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;+
+;
+; @file_comments
+; A small widget who ask a question and give an answer.
+;   WARNING: For a binary question with yes/no answer use
+;   DIALOG_MESSAGE.
+;
+; @categories
+; widget
+;
+; @param QUESTION
+; A scalar string or a array of string. If this
+; argument is set to :
+;      + an array of strings: each array element is
+;        displayed as a separate line of text.
+;      + a scalar string: we are looking for the "separate line
+;        character" '!C'
+;
+; @param PROPOSEDANSWER
+; A string proposing a answer
+;
+;
+; @keyword CHKWIDGET
+; Active this keyword if you whant that xquestion
+; check if managed widget are present. If not, xquestion do not
+; open a widget but print the question in the IDL window. 
+;
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; @returns
+; answer: a string
+;
+; @restrictions
+; The function does not return to its caller until the user
+; press "Enter" key in the widget.
+;
+; @examples
+; IDL> help, xquestion('Postscript name')
+; <Expression>    STRING    = 'toto.ps'
+;
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;                      13/10/1999
+;
+; @version
+; $Id$
+;
+;-
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
 FUNCTION xquestion, question, proposedanswer, CHKWIDGET = chkwidget, _extra = ex ;
 ;
Index: trunk/SRC/ToBeReviewed/WIDGET/xx.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/xx.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/xx.pro	(revision 150)
@@ -1,5 +1,52 @@
-
+;+
+; @file_comments
+;
+;
+; @categories
+;
+; 
+; @keyword JOUR
+; 
+; 
+; @keyword MESHFILENAME
+; 
+; 
+; @keyword LISTVAR
+; 
+; 
+; @keyword LISTGRID
+; 
+; 
+; @keyword FUNCLEC_NAME 
+; 
+; 
+; @keyword CALENDAR
+; 
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+; 
+; 
+; @uses
+; 
+; 
+; @restrictions
+; 
+; 
+; @examples
+; 
+; 
+; @history
+; 
+; 
+; @version 
+; $Id$
+;
+; @todo
+; seb documenter
+;
+;-
+;
 PRO xx,  JOUR = jour, MESHFILENAME = meshfilename,  LISTVAR = listvar, LISTGRID = listgrid, FUNCLEC_NAME = funclec_name, CALENDAR = calendar, _extra = ex
-;
 ;
   compile_opt idl2, strictarrsubs
@@ -8,13 +55,13 @@
 ;----------------------------------------------------------------------
 ;----------------------------------------------------------------------
-;  partie a changer
+;  Name of the part to be changed
 ;----------------------------------------------------------------------
 ;----------------------------------------------------------------------
-; nom de la fonction de lecture:
+; Name of the reading function
    if NOT keyword_set(funclec_name) then funclec_name = 'slec'
    varexp = 'INF'
-; liste des variables
+; list of variables
    if NOT keyword_set(listvar) then listvar = ['tn','sn','un','vn', 'taux', 'tauy','hdep20','hdep28','hdep15','hturb','hpycn','htoth','emp','qn','qs', 'smltot11', 'smltot12', 'smltot13', 'smltot14', 'smltot15', 'smltot16', 'tmltot11', 'tmltot12', 'tmltot13', 'tmltot14', 'tmltot15', 'tmltot16']
-; liste des grilles auxquelles elles se rapportent les variables
+; list of grids to which variables refer to.
    if NOT keyword_set(listgrid) then BEGIN 
       listgrid = replicate('T', n_elements(listvar))
@@ -22,12 +69,12 @@
       listgrid[[3, 5]] = 'V'
    ENDIF
-; calendrier a utiliser (en jours juliens d''IDL   
+; calendar to be used (in IDL julian days    
 ;++++    if NOT keyword_set(calendar) then BEGIN 
 ;++++       if keyword_set(jour) then calendar = calendriertotem(/julian_day) ELSE calendar = calendriertotem(/julian_day, /mensuel)
 ;++++    ENDIF
-; nom du fichier se rapportant au masque
+; Name of the file refering to the mask
    if NOT keyword_set(meshfilename) then meshfilename = '/usr1/com/smasson/IDL/INIT/inittotem.pro'
 ;++++   meshparameters = whichgrid(meshfilename)
-; parameteres specifiant comment doit etre lu le champ
+; parameters specifing how the field must be read
    readparameters= {funclec_name: funclec_name $
                     , jpidta: jpidta, jpjdta: jpjdta, jpkdta: jpkdta $
@@ -37,5 +84,5 @@
 ;----------------------------------------------------------------------
 ;----------------------------------------------------------------------
-;   fin de la partie a changer
+;   End of the part to be change
 ;----------------------------------------------------------------------
 ;----------------------------------------------------------------------
Index: trunk/SRC/ToBeReviewed/WIDGET/xxx.pro
===================================================================
--- trunk/SRC/ToBeReviewed/WIDGET/xxx.pro	(revision 148)
+++ trunk/SRC/ToBeReviewed/WIDGET/xxx.pro	(revision 150)
@@ -1,42 +1,2 @@
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
-;+
-; NAME:xxx
-;
-; PURPOSE:un maximum de possibilites avec un minimum de clics
-;
-; CATEGORY:super widget
-;
-; CALLING SEQUENCE:xxx
-; 
-; INPUTS:none
-;
-; KEYWORD PARAMETERS:
-;
-;      /SEPARATE: pour separer la partie boutons de la partie dessin
-;      en 2 fenetres. Utile pour les petits ecrans, mais attention
-;      peut saturer la memoire video de certains Tx un peu vetustes.
-;
-;      RESTORE='toto.dat' ou toto.dat est un fichier cree lors d''une
-;      precedente utilisation de xxx grace a la commande "Widget" du
-;      menu "save as".
-;
-; OUTPUTS:
-;
-; COMMON BLOCKS:common.pro
-;
-; SIDE EFFECTS:
-;
-; RESTRICTIONS:
-;
-; EXAMPLE:
-;
-; MODIFICATION HISTORY:Sebastien Masson (smasson@lodyc.jussieu.fr)
-;
-;-
-;------------------------------------------------------------
-;------------------------------------------------------------
-;------------------------------------------------------------
 
 PRO xxx_event, event
@@ -48,5 +8,5 @@
 ;------------------------------------------------------------
 ;    = widget_info(event.top,find_by_uname = '')
-; quel est le type d''evenement?
+; What is the type of evenment ?
 ;   if event.id EQ 622 then help,  event,  /struct
    widget_control, event.id, get_uvalue=uval
@@ -55,12 +15,12 @@
 ;help,  event, /struct
 ;help, uval , /struct
-; case sur le type d''evenement
+; case on the type of evenment
    widget_control, event.top, get_uvalue = top_uvalue
-; si on a active le mot cles separate a l''appelle de xxx
+; If we activate the keyword separate at the call of xxx
    if size(top_uvalue, /type) EQ 3 then begin
       event.top = top_uvalue
       widget_control, event.top, get_uvalue = top_uvalue
    endif
-; on tue le petit widget cree par notice.pro si il existe
+; we delete the small widget created by notice.pro if it exists
    noticebase = extractatt(top_uvalue, 'noticebase')
    if noticebase NE 0 then BEGIN
@@ -128,4 +88,52 @@
 ;------------------------------------------------------------
 ;------------------------------------------------------------
+;+
+;
+; @file_comments
+; A maximum of possibilities with a minimum of clics
+;
+; @categories
+; widget
+; 
+; @param DATAFILENAME
+;
+;
+; @param IDLFILE
+;
+;
+; @param ARGSPRO
+;
+;
+; @keyword SEPARATE
+; To separate the button part and the drawing part in 2 windows.
+; Useful for small screens, but be careful to do not saturate the 
+; video memory of some antiquated Tx.
+;
+; @keyword RESTORE
+; 'toto.dat' or toto.dat is a file created at the time of a precedent 
+; use of xxx thanks to the command "Widget" of the menu "save as".
+; 
+; @keyword _EXTRA
+; Used to pass your keywords
+;
+; @uses
+; common.pro
+;
+; @history
+; Sebastien Masson (smasson@lodyc.jussieu.fr)
+;
+; @version
+; $Id$
+;
+; @todo
+; seb: documenter le reste des keywords
+;
+;-
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
+;------------------------------------------------------------
 PRO xxx, datafilename, idlfile, argspro, CALLERWIDID = CallerWidId $
          , REDRAW = redraw, SEPARATE = separate, UVALUE = uvalue $
@@ -154,5 +162,5 @@
 ;------------------------------------------------------------
 ;------------------------------------------------------------
-; liste des fichiers que l''on veut regarder
+; list of files we want to look at
 ;
   if keyword_set(uvalue) then BEGIN 
@@ -368,10 +376,9 @@
 ;------------------------------------------------------------
   if keyword_set(uvalue) then BEGIN ;
-; on recopie le pointeur uvalue dans top_uvalue.
-; Attention, il faut completement redefinir top_uvalue a partir des
-; variables pointees par uvalue. Sinon si on fait simplement
-; top_uvalue = uvalue, qd on detruit par uvalue et les variables
-; surlesquelles il pointe on detruit aussi les variables sur
-; lesquelles pointent top_uvalue.
+; We recopy the pointer uvalue in top_uvalue.
+; Beware, we have to redefine completely top_value from variables 
+; pointed by uvalue. Otherwise, if we simply do top_value = uvalue, 
+; when we delete by uvalue and variables on which it point, we 
+; also delete variables on which point top_value.
     case 1 of
       keyword_set(redraw):BEGIN
@@ -380,7 +387,7 @@
 ; we find homedir
         homedir = isadirectory(io = homedir, title = 'Bad definition of homedir')
-; on recupere la liste des instructions
+; We recuperae the list of instructions
         globalcommand = extractatt(top_uvalue, 'globalcommand')
-; on complete par le premiere et les dernieres lignes du programme
+; We complete by first and last lines of the program
         createpro, globalcommand, filename = myuniquetmpdir + 'xxx2ps.pro' $
                    , KWDLIST = ', NOERASE = noerase, POSTSCRIPT = postscript' $
@@ -395,7 +402,7 @@
         wset, win
         tv, image, /true
-; etat des widgets
+; widgets's state
         updatewidget, base
-; menage
+; 
       END
       ELSE:BEGIN
@@ -416,5 +423,5 @@
         for i = 0, nbredessin-1 do *(*top_uvalue[1, 28])[i] = *(*uvalue[1, 28])[i] 
         widget_control, base, set_uvalue = top_uvalue
-; copie l''ecran du widget de uvalue dans celui de top_uvalue
+; Copy the screen of the widget of uvalue in top_value's one
         if keyword_set(CallerWidId)  then begin
           widget_control, extractatt(uvalue, 'graphid'), get_value = win
@@ -431,10 +438,10 @@
     *top_uvalue[1, findline(top_uvalue, 'graphid')] = graphid
 ;
-  ENDIF ELSE BEGIN
-; sinon on va definit tous les elements que l''on acroche au widget
-; grace a la top_uvalue qui est un tableau de pointeurs a 2 colonnes:
-; les noms et des variables
-; on initialie tous ces elements.
-; variables concernant le widget ds sa generalite
+ENDIF ELSE BEGIN
+; Otherwise we will define all elements we will hook at the widget 
+; thanks to the top_value which is a pointer array with 2 
+; columns: names and variables. 
+; We initialize all these elements.
+; Variables concerning the widget in its generality.
     if NOT keyword_set(ex)  then ex = {nothing:0}
 ; variables se rapportant aux differents fichiers que l''on peut lire
@@ -442,7 +449,7 @@
 ;      
     
-; creation du pointeur que l''on va attache au widget.
+; creation of the pointer we will hook at the widget.
     top_uvalue = ptrarr(2, 29, /allocate_heap)
-; variables se rapportant au widget en general
+; variables refering to the widget
     *top_uvalue[0, 0] = 'options' & *top_uvalue[1, 0] = options
     *top_uvalue[0, 1] = 'smallin' & *top_uvalue[1, 1] = smallin
@@ -458,5 +465,5 @@
     *top_uvalue[0, 11] = 'noticebase' & *top_uvalue[1, 11] = 0l
     *top_uvalue[0, 12] = 'extra' & *top_uvalue[1, 12] = ex
-; variables se rapportant aux differents fichiers que l''on peut lire
+; variables refering to different files we can read
     *top_uvalue[0, 13] = 'currentfile' & *top_uvalue[1, 13] = currentfile
     *top_uvalue[0, 14] = 'filelist' & *top_uvalue[1, 14] = filelist
@@ -464,5 +471,5 @@
     *top_uvalue[0, 16] = 'readparameters' & *top_uvalue[1, 16] = readparameters
     *top_uvalue[0, 17] = 'meshparameters' & *top_uvalue[1, 17] = meshparameters
-; variables se rapportant aux differents dessins que l''on peut faire
+; variables refering to different drawing we can do
     *top_uvalue[0, 18] = 'penvs' & *top_uvalue[1, 18] = replicate(!p, nbredessin)
     *top_uvalue[0, 19] = 'xenvs' & *top_uvalue[1, 19] = replicate(!x, nbredessin)
