Index: trunk/SophyaPI/PI/pi3ddrw.cc
===================================================================
--- trunk/SophyaPI/PI/pi3ddrw.cc	(revision 189)
+++ trunk/SophyaPI/PI/pi3ddrw.cc	(revision 190)
@@ -14,5 +14,42 @@
 // ........................  Classe PIDrawer3D ..........................
 // ......................................................................
-
+//++
+// Class	PIDrawer3D
+// Lib		PI
+// include	pidrawer.h
+//
+//	Classe pour la création d'objets, capables de produire
+//	un dessin 3D dans une composante graphique.
+//--
+//++
+// Links	Parent
+// PIDrawer
+//--
+//++
+// Links	Voir aussi
+// PIGraphic3D
+// PIDraw3DWdg
+//--
+
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIDrawer3D()
+//	Cosntructeur
+// void Set3DView_Obs(float xo, float yo, float zo, float teta, float phi, float psi, -
+//               float dax, float day, float co, float dco=0.2)
+//	Définition de la vue 3D. Voir "PIGraphic3D::Set3DCS_Obs(...)"
+// void Set3DView(float xc, float yc, float zc, float xo, float yo, float zo, -
+//                float dax, float day, float dco=0.2, float psi=0.)
+//	Définition de la vue 3D. Voir "PIGraphic3D::Set3DCS(...)"
+// bool Get3DView(float& xc, float& yc, float& zc, float& xo, float& yo, float& zo, -
+//                float& teta, float& phi, float& psi, float& dax, float& day, float& co, float& dco)
+//	Renvoie la définition de la Vue-3D. Retourne "true " si définie par "Set3DView_Obs()"
+// void Draw3DBoxe(PIGraphic3D* g3, float xx1, float xx2, float yy1, float yy2,  -
+//                 float zz1, float zz2, float xl1, float xl2, -
+//                 float yl1, float yl2, float zl1, float zl2)
+//	Trace une boîte avec les coordonnées matérialisant la vue 3D.
+//--
 
 /* --Methode-- */
@@ -187,4 +224,52 @@
 // ......................................................................
 
+//++
+// Class	PIDraw3DWdg
+// Lib		PI
+// include	pi3ddrw.h
+//
+//   	Classe pour la l'affichage et la manipulation d'un ensemble
+//	de *Drawer3D* avec la gestion de zoom, rotation, déplacement
+//	d'objet.
+//	* Bouton-1 : Envoie le message "PIMsg_Active".
+//	* Bouton-2 : Permet de faire tourner l'observateur (caméra) 
+//	autour de l'objet.
+//	* Shift-Bouton-2 : Permet de tourner l'objet en maintenant 
+//	la caméra fixe. Cette fonction peut-être réalisée sans le shift
+//	à partir du centre de l'objet, en l'ayant préalablement activée
+//	par <Alt>S.
+//	* Bouton-3 : Gestion de zoom (On approche/ éloigne la caméra, ou 
+//	on change l'angle d'ouverture) 
+//
+//	Gestion du clavier :
+//	* <Alt>O : Affichage d'une fenêtre de changement des attributs graphiques
+//	* <Alt>V : Copier/*Coller* Ajout du texte du buffer copier/coller
+//	sur l'objet à la position courante de la souris
+//	* <Alt>Z : Supprime les textes et signes ajoutés au dessin.
+//	* <Alt>A : Active/desactive l'affichage des axes
+//	* <Alt>R : Reinitialise la vue 3D
+//	* <Alt>S : Active/desactive le mode de rotation d'objet sans Shift
+//
+//--
+//++
+// Links	Parents
+// PIBaseWdg
+//--
+//++
+// Links	Voir aussi
+// PIDrawer3D
+//--
+
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIDraw3DWdg(PIContainerGen *par, char *nom, int sx=100, int sy=100, int px=0, int py=0)
+//	Constructeur
+// long	 kind()
+//	Renvoie le type de l'objet ("=PIDraw3DWdg::ClassId")
+// int AddDrawer3D(PIDrawer3D*, bool ad=false)
+//	Ajoute un Drawer3D
+//--
 
 /* --Methode-- */
Index: trunk/SophyaPI/PI/picmap.cc
===================================================================
--- trunk/SophyaPI/PI/picmap.cc	(revision 189)
+++ trunk/SophyaPI/PI/picmap.cc	(revision 190)
@@ -1,3 +1,24 @@
+// Module PI : Peida Interactive     PIColorMap
+// Gestion de table de couleurs        96
+// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
+
 #include "picmap.h"
+
+//++
+// Class	PIColorMap
+// Lib		PI
+// include	picmap.h
+//
+//   	Classe fournissant les services de gestion des tables de couleur.
+//	Une hiérachie un peu complexe a été mise en place pour 
+//	l'implémentation des tables de couleurs pour chaque système
+//	(Mac, XWindow, ...) :
+//|	PIColorMapGen  -----  PIColorMapX     (=PIColorMapNative)
+//|	                 |--  PIColorMapMac   (=PIColorMapNative)
+//	et la gestion de table de couleurs standard partagée.
+//|	PIColorMapNative (=X,Mac,...) ----- PIColorMap.
+//	La seule classe à utiliser est *PIColorMap* qui fournit 
+//	l'ensemble des services de gestion de table de couleurs.
+//--
 
 #define  MXMAPIDS   10 
@@ -16,4 +37,36 @@
 static   int NMaxTableAuto = 0;
 static   PIColorMap* mMaps[10] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL };
+
+//++
+// Titre	Constructeurs, méthodes
+//--
+//++
+// PIColorMap(CMapId id)
+//	Constructeur d'une table de couleur standard, identifiée par "CMapId id"
+//|	CMAP_GREY32     :  32 niveaux de gris
+//|	CMAP_GREYINV32  :  32 niveaux gris du blanc au noir
+//|	CMAP_COLRJ32    :  32 couleurs, du Rouge au Jaune/blanc
+//|	CMAP_COLBR32    :  32 couleurs du bleu au rouge (arcenciel)
+//|	CMAP_COLRV32    :  32 couleurs du rouge au violet
+//|	CMAP_GREY128    :  128 niveaux de gris
+//|	CMAP_GREYINV128 :  128 niveaux gris inversé
+//|	CMAP_COLRJ128   :  128 couleurs, du Rouge au Jaune/blanc
+//|	CMAP_COLBR128   :  128 couleurs du bleu au rouge (arcenciel)
+//|	CMAP_COL16      :  16 Couleurs arcenciel
+//|	CMAP_OTHER      :  Table non standard
+//	Toutes les tables de couleurs standard possèdent 256 cellules de couleurs,
+//	contenant 16 ou 32 ou 128 couleurs distinctes.
+//
+// PIColorMap(string const& nom, int nCol)
+//	Constructeur d'une table de "nCol" couleurs identifié par la chaîne "nom".
+// PIColorMap(PIColorMap&)
+//	Constructeur par copie.
+// int Type()
+//	Retourne le type de la table, correspondant à "CMapId id"
+// int NCol()
+//	Retourne le nombre de cellules de couleurs dans la table
+// string const& Nom()
+//	Renvoie le nom de la table.
+//--
 
 PIColorMap::PIColorMap(CMapId id)
@@ -95,4 +148,29 @@
 
 
+//++
+// Titre	Gestion des couleurs
+//	Une structure *PIColor* permet la manipulation des couleurs à 
+//	travers 3 champs de type "unsigned short: 0 ... 65535" définissant
+//	les intensité des couleurs de base: Rouge, Bleue, Vert.
+//|	struct PIColor {
+//|	  unsigned short red;
+//|	  unsigned short green;
+//|	  unsigned short blue; }
+//
+//--
+//++
+// PIColor GetColor(int n)	
+//	Renvoie la couleur de la cellule "n"
+// bool AllocColor(PIColor const& col, int index)
+//	Alloue la couleur définie par "col" dans la cellule numéro "index".
+//	Renvoie "true" si OK, "false" sinon.
+// void  FreeColors()
+//	Libère les couleurs allouées par la table
+// long  TotNbColors()
+//	Renvoie le nombre total de couleurs disponibles 
+//	(Ex 256 pour un système à 8 plans image, 65536 pour 16 plans, etc ...)
+// int  NbAllocColors()
+//	Renvoie le nombre total de couleurs déjà utilisée par l'application
+//--
 
 void PIColorMap::CleanColorMaps()
Index: trunk/SophyaPI/PI/picmap.h
===================================================================
--- trunk/SophyaPI/PI/picmap.h	(revision 189)
+++ trunk/SophyaPI/PI/picmap.h	(revision 190)
@@ -1,2 +1,7 @@
+// This may look like C code, but it is really -*- C++ -*-
+// Module PI : Peida Interactive     PIColorMap
+// Gestion de table de couleurs        96
+// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
+
 #ifndef PICMAP_H_SEEN
 #define PICMAP_H_SEEN
Index: trunk/SophyaPI/PI/pidrwtools.cc
===================================================================
--- trunk/SophyaPI/PI/pidrwtools.cc	(revision 189)
+++ trunk/SophyaPI/PI/pidrwtools.cc	(revision 190)
@@ -204,4 +204,7 @@
 mOpt[5]->AppendItem("Dashed-Line", 605);
 mOpt[5]->AppendItem("ThickDashed", 606);
+mOpt[5]->AppendItem("ThinDotted", 607);
+mOpt[5]->AppendItem("Dotted-Line", 608);
+mOpt[5]->AppendItem("ThickDotted", 609);
 mOpt[5]->SetValue(600);
 mOpt[5]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
@@ -305,6 +308,7 @@
                      PI_TriangleMarker, PI_FTriangleMarker,
                      PI_StarMarker, PI_FStarMarker };
-PILineAtt line[7] = { PI_NotDefLineAtt, PI_ThinLine, PI_NormalLine, PI_ThickLine, 
-                                        PI_ThinDashedLine, PI_DashedLine, PI_ThickDashedLine};
+PILineAtt line[10] = { PI_NotDefLineAtt, PI_ThinLine, PI_NormalLine, PI_ThickLine, 
+                                         PI_ThinDashedLine, PI_DashedLine, PI_ThickDashedLine, 
+                                         PI_ThinDottedLine, PI_DottedLine, PI_ThickDottedLine };
 
 PIFontAtt fntatt[4] = { PI_NotDefFontAtt, PI_RomanFont, PI_BoldFont, PI_ItalicFont };
@@ -363,5 +367,5 @@
     drw->SetFontAtt(fntsz[kk], fntatt[kkk]);
     k =  mOpt[5]->GetValue()-600;
-    if ( (k < 0) || (k > 6) )  k = 0;
+    if ( (k < 0) || (k > 9) )  k = 0;
     drw->SetLineAtt(line[k]);
     if (msg == 2800) drw->Refresh();
Index: trunk/SophyaPI/PI/pievthandler.cc
===================================================================
--- trunk/SophyaPI/PI/pievthandler.cc	(revision 189)
+++ trunk/SophyaPI/PI/pievthandler.cc	(revision 190)
@@ -5,4 +5,35 @@
 
 #include "pievthandler.h"
+
+//++
+// Class	PIEventHandler
+// Lib		PI
+// include	pievthandler.h
+//
+//	Classe fournissant les services nécessaires à la création de
+//	gestionnaire d'événements écran-clavier-souris.
+//--
+//++
+// Links	Parents
+// PIMsgHandler
+//--
+//++
+// Links	Voir aussi
+// PIWdg
+//--
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIEventHandler(PIMsgHandler* par=NULL, PIMessage msg = 0)
+//	Constructeur. "par" est le gestionnaire de message parent, et
+//	"msg" le message associé.
+//
+// void	  SetMsg(PIMessage msg = 0)
+//	Modification du message associé.
+// PIMessage  Msg() 
+//	Renvoie le message associé.
+//--
+
 
 
@@ -25,4 +56,23 @@
 }
 
+//++
+// Titre	Traitement des événements
+//--
+//++
+// void Draw(PIGraphic* g, int x0, int y0, int dx, int dy)
+//	Méthode spécialisée appelée pour retracer le contenu 
+//	d'une partie de l'objet "PIWdg" auquel est attaché l'objet
+//	"PIEventHandler". "PIGraphic* g" fournit les services de 
+//	tracé graphique et "(x0, y0), "dx * dy" définissent le 
+//	rectangle à retracer. L'implementation par défaut ne 
+//	fait rien.
+//
+// void ProcessEvent()
+//	Cette méthode est appelée pour le traitement de tous 
+//	les autres types d'événements. L'implementation par défaut 
+//	ne fait rien. 
+//--
+
+
 /* --Methode-- */
 void PIEventHandler::Draw(PIGraphic*, int, int, int, int)
@@ -44,4 +94,39 @@
 
 
+//++
+// Titre	Description de l'événement
+//--
+//++
+// PIWdg*  CurrentWdg()
+//	L'objet "PIWdg" source de l'événement.
+// PIEventMask EventType()
+//	Type de l'événement :
+//|	PIEvent_Draw 
+//|	PIEvent_Resize , PIEvent_Enter , PIEvent_Leave
+//|	PIEvent_ButxPress , PIEvent_ButxRelease  (x=1,2,3)
+//|	PIEvent_PtrMove , PIEvent_PtrxMove (x=1,2,3)
+//|	PIEvent_Keyboard
+//
+// int GetPosX()
+//	Position X de la souris
+// int GetPosY()
+//	Position Y de la souris
+// int GetKey()
+//	Code touche du clavier. Code ASCII des caractères ordinaires, ou l'une des constantes:
+//|	PIK_Return , PIK_Enter
+//|	PIK_BackSpace , PIK_Delete
+//|	PIK_Tab , PIK_Escape
+//|	PIK_Up , PIK_Down
+//|	PIK_Right , PIK_Left
+//|	PIK_Previous , PIK_Next
+//
+// PIKeyModifier GetKeyMod()
+//	Code d'une des touches <Shift>, <Alt>, <Cntl> si appuyée en même temps.
+//|	PIKM_Blank , PIKM_Shift , PIKM_Alt , PIKM_Cntl
+//
+// unsigned long GetEventTime()
+//	Temps de l'action en millisecondes.
+//--
+
 /* --Methode-- */
 void PIEventHandler::SetEventInfo(PIEventMask evt, int px, int py, 
Index: trunk/SophyaPI/PI/pigraphgen.cc
===================================================================
--- trunk/SophyaPI/PI/pigraphgen.cc	(revision 189)
+++ trunk/SophyaPI/PI/pigraphgen.cc	(revision 190)
@@ -199,5 +199,6 @@
 //	Choix du type de ligne pour le tracé des lignes et contours
 //|	PI_NormalLine, PI_ThinLine , PI_ThickLine
-//|	PI_DashedLine, PI_ThinDashedLine , PI_ThickDashedLine
+//|	PI_DashedLine, PI_ThinDashedLine, PI_ThickDashedLine
+//|	PI_DottedLine, PI_ThinDottedLine, PI_ThickDottedLine
 // void  SelMarker(int msz=3, PIMarker mrk=PI_DotMarker) 
 //	Choix de la taille et du type de signe pour "DrawMarker() / DrawMarkers()"
Index: trunk/SophyaPI/PI/pigraphgen.h
===================================================================
--- trunk/SophyaPI/PI/pigraphgen.h	(revision 189)
+++ trunk/SophyaPI/PI/pigraphgen.h	(revision 190)
@@ -30,5 +30,6 @@
 enum PILineAtt { PI_NotDefLineAtt = -1,
                  PI_NormalLine = 0, PI_ThinLine = 1, PI_ThickLine = 2 ,
-                 PI_DashedLine = 128, PI_ThinDashedLine = 129, PI_ThickDashedLine = 130 };
+                 PI_DashedLine = 64, PI_ThinDashedLine = 65, PI_ThickDashedLine = 66 ,
+                 PI_DottedLine = 128, PI_ThinDottedLine = 129, PI_ThickDottedLine = 130 };
 
 enum PIMarker  { PI_NotDefMarker = -1,
Index: trunk/SophyaPI/PI/pigraphx.cc
===================================================================
--- trunk/SophyaPI/PI/pigraphx.cc	(revision 189)
+++ trunk/SophyaPI/PI/pigraphx.cc	(revision 190)
@@ -485,4 +485,5 @@
 unsigned int lt=0;
 int lstyle=LineSolid;
+char dash[2]= {3,3};   
 
 if (att == mLAtt)  return;
@@ -502,15 +503,35 @@
     lstyle = LineSolid;
     break;
+
   case PI_DashedLine :
     lt = 2;
     lstyle = LineOnOffDash;
+    dash[0] = dash[1] = 6;  
     break;
   case PI_ThickDashedLine :
     lt = 4;
     lstyle = LineOnOffDash;
+    dash[0] = dash[1] = 6;  
     break;
   case  PI_ThinDashedLine :
     lt = 0;
     lstyle = LineOnOffDash;
+    dash[0] = dash[1] = 6;  
+    break;
+
+  case PI_DottedLine :
+    lt = 2;
+    lstyle = LineOnOffDash;
+    dash[0] = 2; dash[1] = 6;  
+    break;
+  case PI_ThickDottedLine :
+    lt = 4;
+    lstyle = LineOnOffDash;
+    dash[0] = 2; dash[1] = 6;  
+    break;
+  case  PI_ThinDottedLine :
+    lt = 0;
+    lstyle = LineOnOffDash;
+    dash[0] = 2; dash[1] = 6;  
     break;
 
@@ -520,8 +541,8 @@
     break;
   }
-if (lstyle != LineSolid) { 
-  char dash[2]= {3,3};   
+
+if (lstyle != LineSolid) 
   XSetDashes( mDisp, DefGC(), 0, dash, 2);
-  }
+  
 XSetLineAttributes(mDisp, DefGC(), lt, lstyle, CapButt, JoinMiter);
 mLAtt = att;
Index: trunk/SophyaPI/PI/piperiodx.cc
===================================================================
--- trunk/SophyaPI/PI/piperiodx.cc	(revision 189)
+++ trunk/SophyaPI/PI/piperiodx.cc	(revision 190)
@@ -37,5 +37,5 @@
 int szx,szy,szf;
 XtAppContext * appctx = PIXtAppCtx(szx, szy, szf);
-mTId = XtAppAddTimeOut(*appctx, mDt*1000, xttimer_action, this);
+mTId = XtAppAddTimeOut(*appctx, Intervalms(), xttimer_action, this);
 mFgact = true;
 return;
Index: trunk/SophyaPI/PI/pipixmapgen.cc
===================================================================
--- trunk/SophyaPI/PI/pipixmapgen.cc	(revision 189)
+++ trunk/SophyaPI/PI/pipixmapgen.cc	(revision 190)
@@ -1,6 +1,5 @@
-/* Fonctions interface XWindow pour affichage d'images */
-/*                  Reza   05/95                       */
-
-/*                  LAL (Orsay) / IN2P3-CNRS           */
+// Module PI : Peida Interactive     PIPixmap
+// Classe de base pour affichage de pixmap  Reza 96
+// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
 
 #include <stdlib.h>
@@ -9,5 +8,75 @@
 #include "pipixmapgen.h"
 
-// Methodes de la classe PIPixMap  :
+// --------- Methodes de la classe PIPixMap  ----------
+//++
+// Class	PIPixmap
+// Lib		PI
+// include	pipixmapgen.h
+//
+//   	Classe pour la gestion optimisée des pixmap.
+//	Un pixmap est un tableau d'index dans une table de couleurs.
+//	Cette classe gére actuellement des pixmaps avec des index
+//	codés sur 8 bits (256 couleurs).
+//	Pour des raisons d'optimisation, cette classe a une 
+//	implémentation spécifique pour chaque plateforme.
+//	La classe "PIPixmapGen" définit l'interface, et ne doit pas 
+//	être instanciée directement.  Les objets instanciés sont de la 
+//	classes "PIPixmap" et le fichier entête correspondant est "PIPIXMAP_H"
+//	défini dans "pisysdep.h".
+//--
+//++
+// Links	Parents
+// PIBaseWdg
+//--
+//++
+// Links	Voir aussi
+// PIColorMap
+//--
+
+//++
+// Titre	Constructeur, Pixmap
+//--
+//++
+// PIPixmapGen(PIContainerGen *par, char *nom, int sx=10, int sy=10, int px=0, int py=0)
+//	Constructeur - Création d'un "PIPIxmap".
+// long  kind() 
+//	Retourne le type ("=PIPixmap::ClassId")
+// void  SetPixmap(unsigned char *pix, int sx, int sy, bool refr=true, int ox=0, int oy=0)
+//	Associe un tableau d'index "pix" de taille "sx * sy".
+//	(ox,oy)" définissent  l'offset d'affichage.
+//	Si "refr=true", la méthode "Refresh()" est appelée.
+//--
+//++
+// Titre	Gestion de la table de couleur
+//--
+//++
+// void  SetColMap(PIColorMap* cmp, bool refr=true)
+//	Change la table de couleur associée.
+//	Si "refr=true", la méthode "Refresh()" est appelée.
+// void  SetColMapId(CMapId cmapid, bool refr=true)
+//	Change la table de couleur associée, à l'aide d'un identificateur
+//	de table de couleur standard. ("CMapId cmapid").
+//	Si "refr=true", la méthode "Refresh()" est appelée.
+// PIColorMap* GetColMap()
+//	Retourne la table de couleur associée.
+// CMapId GetColMapId() 
+//	Retourne l'identificateur de la table de couleur associée.
+// int NbCol()
+//	Retourne le nombre de couleurs de la table de couleur associée.
+//--
+
+//++
+// Titre	Actions
+//--
+//++
+// void  But1Press(int x, int y)
+//	L'action sur le bouton 1 déclenche l'envoi d'un message
+//	avec le modifier PIMsg_Click. La position du bouton-press
+//	est stocké.
+// int  XPPos() 
+//	Position X du click
+// int  YPPos() 
+//	Position Y du click
+//--
 
 /* --Methode-- */
Index: trunk/SophyaPI/PI/piscdrawwdg.cc
===================================================================
--- trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 189)
+++ trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 190)
@@ -7,5 +7,52 @@
 #include "parradapter.h"
 
+//++
+// Class	PIScDrawWdg
+// Lib		PI
+// include	piscdrawwdg.h
+//
+//   	Classe pour la l'affichage et la manipulation d'un ensemble
+//	de *Drawer* avec la gestion de zoom (agrandissement).
+//	* Bouton-1 : Envoie le message "PIMsg_Active" et affiche
+//	les coordonnées courant (User-Coordinates)
+//	* Bouton-2 : Permet de définir un rectangle pour le zoom.
+//
+//	Gestion du clavier :
+//	* <Alt>O : Affichage d'une fenêtre de changement des attributs graphiques
+//	* <Alt>V : Copier/*Coller* Ajout du texte du buffer copier/coller
+//	sur l'objet à la position courante de la souris
+//	* <Alt>Z : Supprime les textes et signes ajoutés au dessin.
+//--
+//++
+// Links	Parents
+// PIBaseWdg
+//--
+//++
+// Links	Voir aussi
+// PIDrawer
+//--
+
 static inline void fl_swap(float& a, float& b) { float tmp = a; a = b; b = tmp;  } 
+
+//++
+// Titre	Constructeurs, méthodes
+//--
+//++
+//  PIScDrawWdg(PIContainerGen *par, char *nom, int sx=100, int sy=100, int px=0, int py=0)
+//	Constructeur. Contient uniquement le traceur de base, responsable du tracé
+//	des axes et des éléments ajoutés (textes, ...)
+// long  kind()
+//	Renvoie le type ("=PIScDrawWdg::ClassId")
+// void SetLimits(float xmin, float xmax, float ymin, float ymax, -
+//           int axrl=kAxeDirSame, int ayud=kAxeDirSame, bool tmp=false)
+//	Définit les limites de coordonnées.
+// void	 UpdateLimits()
+//	Recalcule les limites de coordonnées à partir du premier Drawer.
+// void  SetAxesFlags(unsigned int flags=kAxesDflt)
+//	Définit les attributs des axes.
+// int  AddScDrawer(PIDrawer*, bool ad=false)
+//	Ajoute un Drawer.
+//--
+
 
 PIScDrawWdg::PIScDrawWdg(PIContainerGen *par, char *nom,
Index: trunk/SophyaPI/PI/pistzwin.cc
===================================================================
--- trunk/SophyaPI/PI/pistzwin.cc	(revision 189)
+++ trunk/SophyaPI/PI/pistzwin.cc	(revision 190)
@@ -10,4 +10,34 @@
 
 // -------------- Classe PIStackLayout --------------
+
+//++
+// Class	PIStackLayout
+// Lib		PI
+// include	pistzwin.h
+//
+//	Classe de gestionnaire de "PIWdg" dans un conteneur avec un seul 
+//	"PIWdg" visible à un moment donné. Permet d'empiler plusieurs
+//	objet dans une fenêtre, et passer de l'un à l'autre.
+//--
+//++
+// Links	Parent
+// PILayoutMgr
+//--
+
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIStackLayout()
+// 	Constructeur
+// PIWdg*  CurrentWdg() 
+//	Retourne l'objet "PIWdg" visible au moment de l'appel.
+// int NumCurrentWdg()
+//	Retourne le numéro de l'objet "PIWdg" visible au moment de l'appel.
+// void  DispNext()
+//	Affiche l'objet "PIWdg" suivant.
+// void  DispWdgNum(int n)
+//	Affiche l'objet "PIWdg" numéro "n".
+//--
 
 /* --Methode-- */
@@ -79,4 +109,40 @@
 }
 
+//++
+// Class	PIStackWindow
+// Lib		PI
+// include	pistzwin.h
+//
+//	Classe de fenêtre ("PIWindow") avec le "PIStackLayout".
+//	Le "PILayoutMgr" ne peut être changé.
+//--
+//++
+// Links	Parent
+// PIWindow
+//--
+//++
+// Links	Voir aussi
+// PIStackLayout
+//--
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIStackWindow(PIMsgHandler* par, char* nom, PIWindowKind k=PIWK_normal, int sx=100, int sy=100, int px=0, int py=0)
+// 	Constructeur - identique à celui de "PIWindow"
+// void  DispNext()
+//	Affichage du "PIWdg" suivant.
+// PIWdg* CurrentWdg()
+//	Retourne l'objet "PIWdg" courant.
+// void  StartAutoDisp(int dtms=1000)
+//	Démarre  l'affichage cyclique automatique avec l'intervalle en temps 
+//	"dtms" spécifié en millisecondes.
+// void  StopAutoDisp()
+//	Arrête l'affichage cyclique automatique.
+// void  PSPrint(PSFile *psf, int ofx=0, int ofy=0)
+//	Rajoute tous les "PIWdg" associés à la fenêtre à l'objet
+//	"PSFile" (fichier PostScript), un objet par page.
+//--
+
 /* --Methode-- */
 PIStackWindow::PIStackWindow(PIMsgHandler* par, char* nom, PIWindowKind k,
@@ -118,7 +184,8 @@
 
 /* --Methode-- */
-void PIStackWindow::StartAutoDisp(int dt)
-{
-mPerad.Start(dt);
+void PIStackWindow::StartAutoDisp(int dtms)
+{
+mPerad.SetIntervalms(dtms);
+mPerad.Start();
 }
 
@@ -130,4 +197,35 @@
 
 //-------------------- Classe PIZoneLayout ------------------------------
+//++
+// Class	PIZoneLayout
+// Lib		PI
+// include	pistzwin.h
+//
+//	Classe de gestionnaire de "PIWdg" dans un conteneur, 
+//	divisé en cellule horizotale-verticale.
+//	En cas d'ajout d'un objet dans une cellule déjà occupée,
+//	l'objet est supprimé si "SetAutoDelChilds(true)", 
+//	sinon "UnManage()" est appelé pour cet objet.
+//--
+//++
+// Links	Parent
+// PILayoutMgr
+//--
+
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIZoneLayout(int nzx, int nzy)
+// 	Constructeur. Subdivision en "nzx" cellules horizontales,
+//	"nzy" cellules verticales.
+// void SetZone(int nzx, int nzy)
+//	Modification du découpage en cellules.
+// void  NbZone(int& nzx, int& nzy)
+//	Retourne le nombre de cellules verticale-horizontale.
+// PIWdg* NextChildPosSize(int& px, int& py, int& sx, int& sy)
+//	Retourne la position et la taille d'un eventuel objet "PIWdg"
+//	ajouté. Retourne le "PIWdg" actuellement dans cette cellule.
+//-- 
 
 /* --Methode-- */
@@ -180,4 +278,5 @@
 child->SetSize(sx, sy);
 child->SetBinding(PIBK_elastic,PIBK_elastic,PIBK_elastic, PIBK_elastic);
+child->LockBinding();
 //  Il faut faire le delete a cet endroit, sinon probleme avec widget motif XmForm  Reza 18/08/98
 if (mZWdg[mZc])  { 
@@ -219,4 +318,34 @@
 
 //-------------------- Classe PIZoneWindow ------------------------------
+//++
+// Class	PIZoneWindow
+// Lib		PI
+// include	pistzwin.h
+//
+//	Classe de fenêtre ("PIWindow") avec le "PIZoneLayout".
+//	Le "PILayoutMgr" ne peut être changé.
+//--
+//++
+// Links	Parent
+// PIWindow
+//--
+//++
+// Links	Voir aussi
+// PIZoneLayout
+//--
+//++
+// Titre	Constructeur, méthodes
+//--
+//++
+// PIZoneWindow(PIMsgHandler* par, char* nom, PIWindowKind k=PIWK_normal, -
+//              int nzx=1, int nzy=1, int sx=100, int sy=100, int px=0, int py=0)
+// 	Constructeur avec spécification de nombre de cellules horizontal "nzx", vertical "nzy".
+// void  SetZone(int nzx, int nzy)
+//	Modification du découpage en cellules.
+// void NbZone(int& nzx, int& nzy)
+//	Retourne le nombre de cellules verticale-horizontale.
+// PIWdg* NextChildPosSize(int& px, int& py, int& sx, int& sy)
+//	Appel à " PIZoneLayout::NextChildPosSize(...) "
+//--
 
 /* --Methode-- */
Index: trunk/SophyaPI/PI/pistzwin.h
===================================================================
--- trunk/SophyaPI/PI/pistzwin.h	(revision 189)
+++ trunk/SophyaPI/PI/pistzwin.h	(revision 190)
@@ -46,5 +46,5 @@
   inline  PIWdg* CurrentWdg() { return( ((PIStackLayout*)layout)->CurrentWdg() ); }
 
-  virtual void  StartAutoDisp(int dt);
+  virtual void  StartAutoDisp(int dtms=1000);
   virtual void  StopAutoDisp();
 
Index: trunk/SophyaPI/PI/piwdggen.cc
===================================================================
--- trunk/SophyaPI/PI/piwdggen.cc	(revision 189)
+++ trunk/SophyaPI/PI/piwdggen.cc	(revision 190)
@@ -33,4 +33,8 @@
 // Links	Parents
 // PIMsgHandler
+//--
+//++
+// Links	Voir aussi
+// PIEventHandler
 //--
 
@@ -65,4 +69,9 @@
 // void  GetScreenPos(int & spx, int & spy)
 //	Renvoie la position de l'objet sur l'écran.
+//--
+//++
+// Titre	Gestion des accrochages (Binding)
+//--
+//++
 // void  SetBinding(PIBindingKind left, PIBindingKind top, PIBindingKind right, PIBindingKind bottom)
 //	Permet de contrôler le comportement de l'objet en cas de changement de taille 
@@ -70,4 +79,12 @@
 //	attachée à une distance fixe par rapport au bord opposé du conteneur ("PIBK_fixed"), 
 //	ou à une position proportionnelle à la taille du conteneur parent. ("PIBK_elastic") 
+// bool  GetBinding((PIBindingKind& left, PIBindingKind& top, PIBindingKind& right, PIBindingKind& bottom)
+//	Permet de connaitre l'état des accrochages. Retourne "true" si les accrochages ont été
+//	verrouillé (appel à "LockBinding()"), "false" sinon.
+// void  LockBinding()
+//	Verrouille l'état des accrochages. Appel à "SetBinding()" sera alors sans effet.
+//	Permet à certains *LayouMgr* d'imposer une contrôle strict.
+// void  UnLockBinding()
+//	Deverrouille les accrochages.
 //--
 
@@ -177,4 +194,5 @@
 {
 parent = par;
+bindingLock = false;
 SetMsg(0);
 SetUserData(NULL, 0);
@@ -216,4 +234,16 @@
   }
 return;
+}
+
+/* --Methode-- */
+void PIWdgGen::LockBinding()
+{
+bindingLock = true;
+}
+
+/* --Methode-- */
+void PIWdgGen::UnLockBinding()
+{
+bindingLock = false;
 }
 
@@ -318,2 +348,41 @@
 }
 */
+
+//++
+// Class	PIScreenBuffer
+// Lib		PI
+// include	piwdggen.h
+//
+//	Classe de tampon de dessin hors écran. Permet la copie du contenu des pixels
+//	depuis et vers des objets "PIWdg", ainsi que depuis et vers d'autres tampon
+//	d'écran. Un objet "PIGraphic" peut-être instancié pour fournir les services
+//	de dessin dans un "PIScreenBuffer"
+//--
+//++
+// Links	Voir aussi
+// PIWdg
+// PIGraphic
+//--
+
+//++
+// Titre	Constructeurs, méthodes
+//--
+//++
+// PIScreenBuffer(int sx, int sy)
+//	Constructeur, création d'un tampon de taille "sx * sy" pixels.
+// int  XSize()
+//	Renvoie la taille en X.
+// int  YSize()
+//	Renvoie la taille en Y.
+//
+//	Pour les opérations de copie, le rectangle source est défini par
+//	la position du coin haut-gauche "(ox,oy)" et la taille "dx * dy" en pixels.
+//	La copie s'effectue sur l'objet destination à partir de l'offset "(x,y)".
+//
+// void CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y)
+//	Copie depuis l'objet "PIWdg* wdg".
+// void CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y)
+//	Copie vers l'objet "PIWdg* wdg".
+// void CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y)
+//	Copie depuis l'objet "PIScreenBuffer* grb"
+//--
Index: trunk/SophyaPI/PI/piwdggen.h
===================================================================
--- trunk/SophyaPI/PI/piwdggen.h	(revision 189)
+++ trunk/SophyaPI/PI/piwdggen.h	(revision 190)
@@ -64,6 +64,12 @@
   virtual void           SetBorderWidth(int bw)=0;
   virtual void           SetLabel(string const&) {}
+
+//  Gestion des accrochages (binding) aux containers
   virtual void           SetBinding(PIBindingKind left, PIBindingKind top, 
-                                    PIBindingKind right, PIBindingKind bottom)=0;
+                                    PIBindingKind right, PIBindingKind bottom)      =0;
+  virtual bool           GetBinding(PIBindingKind& left, PIBindingKind& top, 
+                                    PIBindingKind& right, PIBindingKind& bottom)    =0;
+  virtual void		 LockBinding();
+  virtual void		 UnLockBinding();
 
   virtual int            XSize()=0;
@@ -116,4 +122,5 @@
   list<EvHand>		 mDHlist;
   list<EvHand>		 mEHlist;
+  bool			 bindingLock;
 private:
   int flag;
Index: trunk/SophyaPI/PI/piwdgx.cc
===================================================================
--- trunk/SophyaPI/PI/piwdgx.cc	(revision 189)
+++ trunk/SophyaPI/PI/piwdgx.cc	(revision 190)
@@ -104,4 +104,5 @@
 wmis =  k_wmi_appshell;
 stmng = false;
+mBKleft =  mBKright =  mBKtop =  mBKbottom = PIBK_free;
 #ifdef DEBUG_PIWdgX
 printf("Debug_PIWdgX::PIWdgX(int , char * [])  this=%lx  top=%lx \n", (long)this, (long)sdw);
@@ -118,4 +119,5 @@
 sdw = NULL;
 wmis = k_wmi_unknown;
+mBKleft =  mBKright =  mBKtop =  mBKbottom = PIBK_free;
 }
 
@@ -313,4 +315,5 @@
 Arg  wargs[9];
 int n=0;
+if (bindingLock) return;
 if (!sdw)  return;
 if (!parent)  return;
@@ -341,6 +344,10 @@
     XtSetArg(wargs[n],XmNleftPosition, frpos );  n++;
     break;
-  }
-
+  default :
+    left = PIBK_free;
+    XtSetArg(wargs[n],XmNleftAttachment, XmATTACH_NONE);  n++;
+    break;    
+  }
+ 
 switch (top)
   {
@@ -358,4 +365,8 @@
     XtSetArg(wargs[n],XmNtopPosition, frpos );  n++;
     break;
+  default :
+    top = PIBK_free;
+    XtSetArg(wargs[n],XmNtopAttachment, XmATTACH_NONE);  n++;
+    break;
   }
   
@@ -375,4 +386,9 @@
     XtSetArg(wargs[n],XmNrightPosition, frpos );  n++;
     break;
+  default : 
+    right = PIBK_free;
+    XtSetArg(wargs[n],XmNrightAttachment, XmATTACH_NONE);  n++;
+    break;
+
   }
 
@@ -392,8 +408,13 @@
     XtSetArg(wargs[n],XmNbottomPosition, frpos );  n++;
     break;
+  default :
+    bottom =  PIBK_free;
+    XtSetArg(wargs[n],XmNbottomAttachment, XmATTACH_NONE);  n++;
+    break;
   }
 
 XtSetValues(this->sdw, wargs, n);
-
+mBKleft = left;  mBKright = right;
+mBKtop = top;  mBKbottom = bottom;
 // printf(" Out_SetBinding: C-Sz= %d %d - Sz=%d %d , Pos= %d %d \n",  parent->XSize(),
 // parent->YSize(), XSize(), YSize(), XPos(), YPos());
@@ -402,4 +423,12 @@
 }
 
+/* --Methode-- */
+bool PIWdgX::GetBinding(PIBindingKind& left, PIBindingKind& top, 
+                        PIBindingKind& right, PIBindingKind& bottom)
+{
+left = mBKleft;  right = mBKright;
+top = mBKtop;  bottom = mBKbottom;
+return(bindingLock);
+}
 
 /* --Methode-- */
Index: trunk/SophyaPI/PI/piwdgx.h
===================================================================
--- trunk/SophyaPI/PI/piwdgx.h	(revision 189)
+++ trunk/SophyaPI/PI/piwdgx.h	(revision 190)
@@ -36,6 +36,10 @@
   virtual void   SetPos(int px, int py);
   virtual void   SetLabel(string const & lab);
+
+
   virtual void   SetBinding(PIBindingKind left, PIBindingKind top, 
                             PIBindingKind right, PIBindingKind bottom);
+  virtual bool   GetBinding(PIBindingKind& left, PIBindingKind& top, 
+                            PIBindingKind& right, PIBindingKind& bottom);
 
   virtual int    XSize();
@@ -96,5 +100,5 @@
   WmIntState wmis;
   bool stmng;
-  
+  PIBindingKind mBKleft, mBKright, mBKtop, mBKbottom;
 };
 
