Index: /trunk/SophyaPI/PIext/graphexecut.cc
===================================================================
--- /trunk/SophyaPI/PIext/graphexecut.cc	(revision 3268)
+++ /trunk/SophyaPI/PIext/graphexecut.cc	(revision 3269)
@@ -285,5 +285,25 @@
   string ph = "";
   mObjMgr->DisplayNT(tokens[0], tokens[1], tokens[2], ph, tokens[3], tokens[4], ph, 
-                     tokens[5], tokens[6], tokens[7], false);
+                     tokens[5], tokens[6], ph, false, tokens[7], false);
+  }
+else if (kw == "nt2dcn") {
+  if (tokens.size() < 4) { 
+    cout << "Usage: nt2dcn nameobj color varx vary [errx erry wt label opt]" << endl; 
+    return(0); 
+  }
+  while (tokens.size() < 9) tokens.push_back("");
+  string ph = "";
+  mObjMgr->DisplayNT(tokens[1], tokens[2], tokens[3], ph, tokens[4], tokens[5], ph, 
+                     tokens[6], tokens[7], tokens[0], false, tokens[8], false);
+  }
+else if (kw == "nt2dci") {
+  if (tokens.size() < 4) { 
+    cout << "Usage: nt2dci nameobj color varx vary [errx erry wt label opt]" << endl; 
+    return(0); 
+  }
+  while (tokens.size() < 9) tokens.push_back("");
+  string ph = "";
+  mObjMgr->DisplayNT(tokens[1], tokens[2], tokens[3], ph, tokens[4], tokens[5], ph, 
+                     tokens[6], tokens[7], tokens[0], true, tokens[8], false);
   }
 else if (kw == "nt3d") {
@@ -685,5 +705,17 @@
 usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
 usage += "\n Usage : nt2d nameobj varx vary [errx erry wt label graphic_attributes]";
-usage += "\n  Related commands: disp  surf  nt3d  gfd2d vecplot";  
+usage += "\n  Related commands: disp surf nt2dcn nt2dci nt3d  gfd2d vecplot";  
+mpiac->RegisterCommand(kw, usage, this, grp);
+kw = "nt2dcn";
+usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
+usage = "   with colors specified by a column content (as color names) ";
+usage += "\n Usage : nt2dcn nameobj color varx vary [errx erry wt label graphic_attributes]";
+usage += "\n  Related commands: disp  surf  nt2d nt2dci nt3d  gfd2d vecplot";  
+mpiac->RegisterCommand(kw, usage, this, grp);
+kw = "nt2dci";
+usage = "Displays Points (X-Y) [with error-bar / Weight / Label ] from an NTuple ";
+usage = "   with colors specified by a column content (as color index) ";
+usage += "\n Usage : nt2dci nameobj color varx vary [errx erry wt label graphic_attributes]";
+usage += "\n  Related commands: disp  surf  nt2d nt2dci nt3d  gfd2d vecplot";  
 mpiac->RegisterCommand(kw, usage, this, grp);
 kw = "nt3d";
Index: /trunk/SophyaPI/PIext/nobjmgr.cc
===================================================================
--- /trunk/SophyaPI/PIext/nobjmgr.cc	(revision 3268)
+++ /trunk/SophyaPI/PIext/nobjmgr.cc	(revision 3269)
@@ -1407,5 +1407,5 @@
 void NamedObjMgr::DisplayNT(string& nom, string& nmx, string& nmy, string& nmz,
                             string& erx, string& ery, string& erz, string& wt, 
-                            string& label, string dopt, bool fg3d)
+                            string& label, string& colornm, bool coloridx, string dopt, bool fg3d)
 {
 // Pas de display si option dopt = nodisp 
@@ -1453,4 +1453,8 @@
   pin->SelectLabel(label.c_str());
   pin->SelectErrBar(erx.c_str(), ery.c_str());
+  if (colornm.length() > 0) {   // Juin 2007 : gestion de nom de colonne pour la couleur
+    if (coloridx) pin->SelectColorByIndex(colornm.c_str());
+    else pin->SelectColorByName(colornm.c_str());
+  }
   string titre = nmy + "%" + nmx;
   wrsid = myImgApp->DispScDrawer( (PIDrawer*)pin, n1, dopt, titre, 0, fglock);
Index: /trunk/SophyaPI/PIext/nobjmgr.h
===================================================================
--- /trunk/SophyaPI/PIext/nobjmgr.h	(revision 3268)
+++ /trunk/SophyaPI/PIext/nobjmgr.h	(revision 3269)
@@ -86,5 +86,6 @@
   virtual void          DisplayNT(string & nom, string& nmx, string& nmy, string& nmz,  
                                   string& erx, string& ery, string& erz, string& wt,
-                                  string& label, string dopt="", bool fg3d=false);
+                                  string& label, string& colornm, bool coloridx=false, 
+				  string dopt="", bool fg3d=false);
   virtual void          DisplayGFD(string & nom, string& numvarx, string& numvary, 
                                    string& err, string dopt="");
Index: /trunk/SophyaPI/PIext/pintuple.cc
===================================================================
--- /trunk/SophyaPI/PIext/pintuple.cc	(revision 3268)
+++ /trunk/SophyaPI/PIext/pintuple.cc	(revision 3269)
@@ -58,4 +58,6 @@
   SelectErrBar();
   SelectLabel(NULL);
+  SelectColorByName(NULL);
+  SelectColorByIndex(NULL);
   SetName("NTupleDrw");
   NptDraw = 0;
@@ -114,4 +116,21 @@
 
 /* --Methode-- */
+void  PINTuple::SelectColorByName(const char* pcolnm=NULL)
+{
+if (pcolnm == NULL) cnK = -1;
+else {  string name = pcolnm;  cnK = mNT->ColumnIndex(name);  }
+if (cnK >= 0)  ciK = -1;
+}
+
+/* --Methode-- */
+void  PINTuple::SelectColorByIndex(const char* pcolidx=NULL)
+{
+if (pcolidx == NULL) ciK = -1;
+else {  string name = pcolidx;  ciK = mNT->ColumnIndex(name);  }
+if (ciK >= 0)  cnK = -1;
+}
+
+
+/* --Methode-- */
 void  PINTuple::SelectErrBar(const char* erbx, const char* erby)
 {
@@ -162,4 +181,8 @@
 double dw = (wMax-wMin)/nWbins;
 if (dw < 1.e-19) dw = 1.e-19;
+
+// La couleur par defaut (pour le trace avec couleur specifie par nom de colonne (06/2007)
+PIColors defcol = GetGraphicAtt().GetColor();
+if (defcol == PI_NotDefColor) defcol = PI_Black;
 
 //  Pour tracer des markers avec couleur en fonction de Wt (poids)
@@ -234,4 +257,15 @@
   }
 
+// Si on a specifie un nom de colonne pour la couleur (06/2007) 
+  if ( (cnK >= 0) || (ciK >= 0) ) {
+    PIColors scol = defcol;
+    if (cnK > 0) 
+      scol = PIGraphicAtt::ColNameToColor(mNT->GetCelltoString(i, cnK));
+    else 
+      scol = PIGraphicAtt::ColIndexToColor(mNT->GetCell(i, ciK));
+    if (scol == PI_NotDefColor) scol = defcol;
+    g->SelForeground(scol);
+  }
+
   // Trace d'une ligne reliant les points
   if( connectPts ) {
@@ -273,4 +307,5 @@
 
 if (stats) { // Trace de stats 
+  g->SelForeground(defcol);
   g->SelFontSz((YMax() - YMin())/30);  
   // La hauteur de la cellule
Index: /trunk/SophyaPI/PIext/pintuple.h
===================================================================
--- /trunk/SophyaPI/PIext/pintuple.h	(revision 3268)
+++ /trunk/SophyaPI/PIext/pintuple.h	(revision 3269)
@@ -22,4 +22,6 @@
   virtual void       SelectErrBar(const char* erbx=NULL, const char* erby=NULL);
   virtual void       SelectLabel(const char* plabel=NULL);
+  virtual void       SelectColorByName(const char* pcolnm=NULL);
+  virtual void       SelectColorByIndex(const char* pcolidx=NULL);
 
   inline  void       ConnectPoints(bool fg=false) { connectPts = fg; }
@@ -56,4 +58,6 @@
   int wK;              // Index du nom de variable poids
   int lK;              // Index du nom de variable label (affiche en texte)
+  int cnK;             // Index du nom de variable couleur (par nom de couleur)
+  int ciK;             // Index du nom de variable couleur (par index de couleur)
   double wMin, wMax;   // Valeurs de poids min/max
   bool mrkSzScale;     // true -> Taille de markers variable suivant poids
