Index: /trunk/SophyaPI/PI/pidrawer.cc
===================================================================
--- /trunk/SophyaPI/PI/pidrawer.cc	(revision 342)
+++ /trunk/SophyaPI/PI/pidrawer.cc	(revision 343)
@@ -131,4 +131,7 @@
 //	Cette méthode doit calculer les limites (X/Y Min-Max) préferées par l'objet
 //	et doit appeler "SetLimits()". L'implementation par défaut ne fait rien.
+//  void  AppenTextInfo(string& info, double xmin, double ymin, double xmax, double ymax)
+//	Méthode qui met à jour la chaîne "info", avec les informations (textuelles) de 
+//	la zone définie par "xmin-xmax" , "ymin-ymax".
 //--
 
@@ -441,4 +444,11 @@
 }
 
+void
+PIDrawer::AppendTextInfo(string& info, double /*xmin*/, double /*ymin*/, double /*xmax*/, double /*ymax*/)
+{
+}
+
+
+
 
 void
Index: /trunk/SophyaPI/PI/pidrawer.h
===================================================================
--- /trunk/SophyaPI/PI/pidrawer.h	(revision 342)
+++ /trunk/SophyaPI/PI/pidrawer.h	(revision 343)
@@ -9,8 +9,4 @@
 #include "pigraphuc.h"
 
-#include <list>
-#if defined(__KCC__)
-#include <list.h>
-#endif
 
 enum {
@@ -42,4 +38,6 @@
   virtual void       Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax); 
    
+  virtual void       AppendTextInfo(string& info, double xmin, double ymin, double xmax, double ymax);
+
   virtual void       Refresh();      // Recalcule les limites et reaffiche
   virtual void       UpdateLimits();   // Calcule et change les limites  
Index: /trunk/SophyaPI/PI/piimage.cc
===================================================================
--- /trunk/SophyaPI/PI/piimage.cc	(revision 342)
+++ /trunk/SophyaPI/PI/piimage.cc	(revision 343)
@@ -305,8 +305,13 @@
   GetScreenPos(tpx, tpy);
   string nom = Nom() + "-Cuts";
-  cutwin = new PIWindow(this, const_cast<char *>(nom.c_str()), PIWK_normal,  300, 200, tpx, tpy+YSize()+10);
+  int sx, sy;
+  int ssx, ssy;
+  PIApplicationScreenSize(ssx, ssy);
+  if ( (ssx > 1000) && (ssy > 1000) ) { sx = 400;  sy = 250; }
+  else { sx = 300; sy = 200; }
+  cutwin = new PIWindow(this, nom.c_str(), PIWK_normal, sx, sy, tpx, tpy+YSize()+10);
   cutwin->SetAutoDelChilds(true);
   nom += "_ScWdg";
-  cutscw = new PIScDrawWdg(cutwin, const_cast<char *>(nom.c_str()), 300, 200, 0, 0);
+  cutscw = new PIScDrawWdg(cutwin, nom.c_str(), sx, sy, 0, 0);
   cutscw->SetBinding(PIBK_fixed, PIBK_fixed, PIBK_fixed, PIBK_fixed);
   cutarrx = new PIImg1DArrAdapter();
Index: /trunk/SophyaPI/PI/piscdrawwdg.cc
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 342)
+++ /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 343)
@@ -17,4 +17,5 @@
 //	les coordonnées courantes (User-Coordinates)
 //	* Bouton-2 : Permet de définir un rectangle pour le zoom.
+//	* Bouton-3 : Permet de définir un rectangle pour le texte info.
 //
 //	Gestion du clavier :
@@ -26,4 +27,5 @@
 //	* <Alt>V : Copier/*Coller* Ajout du texte du buffer copier/coller
 //	sur l'objet à la position courante.
+//	* <Alt>I : Affiche et met a jour la fenetre Texte-Info .
 //	* <Alt>Z : Supprime les textes et signes ajoutés au dessin.
 //--
@@ -67,4 +69,5 @@
   mCPosX = mCPosY = 0;
   mPPos[0] = mPPos[1] = 0.;
+  mPSz[0] = mPSz[1] = 0.;
 
   mBDrw = new PIElDrawer;
@@ -76,14 +79,21 @@
 //  SetDefaultDrawRectangle(0.12, 0.08, 0.88, 0.92, true);
   AddDrawer(mBDrw, true, false, false);
-  
+
+//  Pour afficher les coordonnees courante (click-bouton-1)  
   mTrlb = mTxw = NULL;
   mTrW = NULL;
   SetTextWin(NULL);
 
+//  Affichage eventuelle d'infos-texte
+  mInfoW = NULL;
+  mInfoTxt = NULL;
+
   ActivateKeyboard();
   ActivateButton(1);    // Pour pouvoir activer la fenetre et coordonnees
   ActivateMove(1);      //    "         "         "        "
-  ActivateButton(2);
-  ActivateMove(2);
+  ActivateButton(2);    //  Pour gerer le zoom
+  ActivateMove(2);      //    "         "
+  ActivateButton(3);    //  Pour definir la zone info-texte
+  ActivateMove(3);      //    "         "
 
 }
@@ -93,4 +103,5 @@
   delete mBDrw;
   if (mTrW)  delete mTrW;
+  if (mInfoW) delete mInfoW;
 }
 
@@ -108,4 +119,5 @@
     PIDrwTools::ShowPIDrwTools();   // Fentre axes et options de trace
     }
+  else if (key == 'I' || key == 'i') UpdateInfoWindow();  // Fenetre Text-Info 
   }
 }
@@ -131,4 +143,6 @@
   mPPos[0] = 0.5*(XMin()+XMax());
   mPPos[1] = 0.5*(YMin()+YMax());
+  mPSz[0] = 0.05*(XMax()+XMin());
+  mPSz[1] = 0.05*(YMax()+YMin());
   if (!tmp) {
     xMinS = xmin;
@@ -205,4 +219,55 @@
   PIDrwTools::ShowPIDrwTools();   // Fentre axes et options de trace
 }
+
+void
+PIScDrawWdg::UpdateInfoWindow()
+{
+
+if (mInfoW == NULL) { // Creation de la fenetre info
+  string nom = Nom() + "-Info";
+  int tpx, tpy;
+  GetScreenPos(tpx, tpy);
+  int sx, sy;
+  int ssx, ssy;
+  PIApplicationScreenSize(ssx, ssy);
+  if ( (ssx > 1000) && (ssy > 1000) ) { sx = 400;  sy = 200; }
+  else { sx = 300; sy = 160; }
+  mInfoW = new PIWindow(this, nom.c_str(), PIWK_normal,  sx, sy, tpx, tpy+YSize()+10);
+  mInfoW->SetAutoDelChilds(true);
+  nom = Nom() + "-InfoText";
+  mInfoTxt = new PIText(mInfoW, nom.c_str(), true, true, sx, sy, 0, 0);
+  mInfoTxt->SetBinding(PIBK_fixed, PIBK_fixed, PIBK_fixed, PIBK_fixed);
+  mInfoTxt->SetMutiLineMode(true);
+  mInfoTxt->SetTextEditable(false);
+  }
+
+//  Boucle sur tous les drawers :
+vector<BWDrwId>::iterator it;
+char buff[128];
+sprintf(buff, "Info: NDrawer= %d - Pos=%g %g  (Sz=%g,%g) \n", (int)mDrwList.size()-1, 
+        mPPos[0], mPPos[1], mPSz[0], mPSz[1] );
+double xmin, ymin, xmax, ymax;
+xmin = mPPos[0] - 0.5*mPSz[0];
+xmax = mPPos[0] + 0.5*mPSz[0];
+ymin = mPPos[1] - 0.5*mPSz[1];
+ymax = mPPos[1] + 0.5*mPSz[1];
+
+string info = buff;
+int k=0;
+for(it = mDrwList.begin(); it != mDrwList.end(); it++) {
+  if ((*it).drw == mBDrw )  continue;
+  k++;
+  sprintf(buff," --------- Drawer %d ----------- \n", k); 
+  info += buff; 
+  (*it).drw->AppendTextInfo(info, xmin, ymin, xmax, ymax);
+  }
+
+mInfoW->Show();
+mInfoTxt->Manage();
+mInfoTxt->SetText(info);
+}
+
+// .............................
+// Bouton-1 : Position courante 
 
 void
@@ -296,5 +361,7 @@
 }
 
-// Gestion du zoom
+// .............................
+// Bouton-2 Gestion du zoom 
+
 void
 PIScDrawWdg::But2Press(int x, int y)
@@ -355,4 +422,63 @@
 
 
+// .............................
+// Bouton-3 : Gestion de definition de la taille de rectangle Text-Info
+
+void
+PIScDrawWdg::But3Press(int x, int y)
+{
+  xEndDrag = xBegDrag = x;
+  yEndDrag = yBegDrag = y;
+  cForCol = mWGrC->GetForeground();
+  cGOmod  = mWGrC->GetGOMode();
+  cPointer = GetPointerShape();
+  cLatt = mWGrC->GetLineAtt();
+  SelPointerShape(PI_CrossPointer);
+  mWGrC->SelForeground(PI_Magenta);
+  mWGrC->SelGOMode(PI_GOXOR);
+  mWGrC->SelLine(PI_ThinLine);
+  Send(Msg(), PIMsg_Active);
+  PIDrwTools::SetCurrentBaseWdg(this);
+}
+
+void
+PIScDrawWdg::But3Release(int /*x*/, int /*y*/)
+{
+
+  mWGrC->DrawBox(xBegDrag, yBegDrag, xEndDrag-xBegDrag, yEndDrag-yBegDrag);
+
+  mWGrC->SelForeground(cForCol);
+  mWGrC->SelGOMode(cGOmod);
+  SelPointerShape(cPointer); 
+  mWGrC->SelLine(cLatt); 
+
+  double xl,yl,xh,yh;
+  mBDrw->GetGraphicUC()->GrC2UC(xBegDrag, yBegDrag, xl, yl);
+  mBDrw->GetGraphicUC()->GrC2UC(xEndDrag, yEndDrag, xh, yh);
+  if (xl > xh) dbl_swap(xl, xh);
+  if (yl > yh) dbl_swap(yl, yh);
+  mPPos[0] = 0.5*(xl+xh);
+  mPPos[1] = 0.5*(yl+yh);
+  mPSz[0] = xh-xl;
+  mPSz[1] = yh-yl;
+  mCPosX =  0.5*(xBegDrag+xEndDrag);
+  mCPosY =  0.5*(yBegDrag+yEndDrag);
+
+  return;
+}
+
+void
+PIScDrawWdg::Ptr3Move(int x, int y)
+{
+  mWGrC->DrawBox(xBegDrag, yBegDrag, xEndDrag-xBegDrag, yEndDrag-yBegDrag);
+  xEndDrag = x;
+  yEndDrag = y;
+  mWGrC->DrawBox(xBegDrag, yBegDrag, xEndDrag-xBegDrag, yEndDrag-yBegDrag);
+}
+
+
+// --------------------------------------------------------------------------
+// --------------------------------------------------------------------------
+// --------------------------------------------------------------------------
 // ----------------------------------------------------------
 //  Classe de trace de points/fonctions Y=f(X)
@@ -360,4 +486,5 @@
 //  Trace Y=ax->Value() = f(X= ax->X())  si ay == NULL
 // ----------------------------------------------------------
+// --------------------------------------------------------------------------
 
 /* --Methode-- */
Index: /trunk/SophyaPI/PI/piscdrawwdg.h
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.h	(revision 342)
+++ /trunk/SophyaPI/PI/piscdrawwdg.h	(revision 343)
@@ -59,4 +59,7 @@
   virtual void	     ActivateSpecializedControls();   // Pour activer des controles specifiques
 
+  virtual void       UpdateInfoWindow();    // Affiche et met a jour la fenetre info texte
+                                            // concernant le petit pave autour de la pos. courante 
+
   void               SetTextWin(PILabel * tw, bool trw=true, int tx=300, int ty=30);
 
@@ -69,4 +72,8 @@
   virtual void       Ptr2Move(int x, int y);
   
+  virtual void       But3Press(int x, int y);
+  virtual void       But3Release(int x, int y);
+  virtual void       Ptr3Move(int x, int y);
+
   virtual void       Keyboard(int key, PIKeyModifier kmod);
   virtual void       PasteSelection(unsigned int typ, void *pdata, unsigned int l);
@@ -75,4 +82,5 @@
   double xMinS, xMaxS, yMinS, yMaxS; // Sauvegarde pour zoom
   double mPPos[2];               // Position courante (user coordinates)
+  double mPSz[2];                // Taille courant du pave info 
   int mCPosX, mCPosY;              // Position click souris X,Y
   bool mFgReticule;                // Controle l'affiche d'une réticule (Bouton-1)
@@ -89,4 +97,9 @@
   PILabel * mTrlb;
   PIWindow * mTrW;
+
+// Fenetre pour l'affichage des informations 
+  PIWindow * mInfoW;
+  PIText * mInfoTxt;
+
 
 private:
