Index: /trunk/SophyaPI/PI/picmap.cc
===================================================================
--- /trunk/SophyaPI/PI/picmap.cc	(revision 1123)
+++ /trunk/SophyaPI/PI/picmap.cc	(revision 1124)
@@ -22,18 +22,27 @@
 //--
 
-#define  MXMAPIDS   15
+#define  MXMAPIDS   16
 static   int    MapNCols[MXMAPIDS] = {256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
-                                      256, 256, 256, 256, 256 };
-static   const char*  MapNoms[MXMAPIDS]  = {"Grey32","InvGrey32","ColRJ32","ColBR32",
-                               "ColRV32", "Grey128", "InvGrey128", "ColRJ128",
-                               "ColBR128", "Col16",
-                               "MIDAS_Pastel", "MIDAS_Heat", "MIDAS_Rainbow3", 
-                               "MIDAS_BlueRed", "MIDAS_BlueWhite" };
-static   CMapId MapIds[MXMAPIDS] = { CMAP_GREY32, CMAP_GREYINV32, CMAP_COLRJ32,
-                               CMAP_COLBR32, CMAP_COLRV32, CMAP_GREY128, 
-                               CMAP_GREYINV128, CMAP_COLRJ128, CMAP_COLBR128,  
-                               CMAP_COL16,
-                               CMAP_MIDAS_Pastel, CMAP_MIDAS_Heat, CMAP_MIDAS_Rainbow3, 
-                               CMAP_MIDAS_BlueRed, CMAP_MIDAS_BlueWhite } ;
+                                      256, 256, 256, 256, 256, 256 };
+
+// Tables de couleurs :
+// 5 Standard PI , 32  couleurs
+// 4 Standard PI , 128 couleurs
+// 6 MIDAS , 256 couleurs
+// 1 Standard PI 16 couleurs
+
+static   const char*  MapNoms[MXMAPIDS]  = {
+                      "Grey32","InvGrey32","ColRJ32","ColBR32","ColRV32", 
+                      "Grey128","InvGrey128","ColRJ128","ColBR128",
+                      "MIDAS_Pastel","MIDAS_Heat","MIDAS_Rainbow3", 
+                      "MIDAS_BlueRed","MIDAS_BlueWhite","MIDAS_RedWhite",
+                      "Rainbow16"};
+
+static   CMapId MapIds[MXMAPIDS] = { 
+                      CMAP_GREY32, CMAP_GREYINV32, CMAP_COLRJ32, CMAP_COLBR32, CMAP_COLRV32, 
+                      CMAP_GREY128, CMAP_GREYINV128, CMAP_COLRJ128, CMAP_COLBR128,  
+                      CMAP_MIDAS_Pastel, CMAP_MIDAS_Heat, CMAP_MIDAS_Rainbow3, 
+                      CMAP_MIDAS_BlueRed, CMAP_MIDAS_BlueWhite, CMAP_MIDAS_RedWhite, 
+                      CMAP_COL16 } ;
 
 static   int mColTNums[8192];   // Max 8192 tables differentes pour le moment  
@@ -41,7 +50,9 @@
 
 static   int NMaxTableAuto = 0;
-static   PIColorMap* mMaps[15] = {NULL, NULL, NULL, NULL, NULL, 
+static   PIColorMap* mMaps[MXMAPIDS] = {
                                   NULL, NULL, NULL, NULL, NULL, 
-                                  NULL, NULL, NULL, NULL, NULL  };
+                                  NULL, NULL, NULL, NULL, NULL, 
+                                  NULL, NULL, NULL, NULL, NULL,
+                                  NULL  };
 
 int  PIColorMap::NumberStandardColorMaps()
@@ -308,12 +319,16 @@
   case CMAP_COLRV32 :
     for( i=0; i<32; i++) {
-      if (i < 8) {
-        mycol.green = 15000+(i*5000); mycol.blue = 0;  
-        mycol.red = 15000+(i*5000); }
+      if (i < 9) {
+        mycol.green = i*5000; mycol.blue = 0;  
+        mycol.red = i*6000; }
+      else if (i < 15) {
+	mycol.green = 40000;
+	mycol.blue = 0;  
+	mycol.red = 50000+(i-9)*1000;
+      }
       else if (i < 21) {
-        mycol.green = 50000-(i-7)*5000;   
-        if (mycol.green < 0)  mycol.green = 0;
+        mycol.green = 40000-(i-15)*8000;
         mycol.blue = 0;
-        mycol.red = 53535+(i-8)*1000;  }
+        mycol.red = 57535+(i-15)*1600;  }
       else { 
         mycol.green = 0;  mycol.red = 65535;
@@ -388,11 +403,12 @@
       break;
 
-  case CMAP_MIDAS_Pastel :   // Les valeurs correspondent a  je ne sais quel table MIDAS
+  case CMAP_MIDAS_Pastel :   // 
   case CMAP_MIDAS_Heat :      // A faire  pour CMAP_MIDAS_Pastel CMAP_MIDAS_Heat 
   case CMAP_MIDAS_Rainbow3 :  //    A faire  pour Heat Rainbow3 BlueRed BlueWhite
   case CMAP_MIDAS_BlueRed :   //    BlueRed -> idl11
   case CMAP_MIDAS_BlueWhite : //    BlueWhite -> blulut.lutlis
+  case CMAP_MIDAS_RedWhite :  // rouge-rose-blanc je ne sais quelle table MIDAS ??    
    {
-    static float rgb_r[256] = {
+   float rgb_r[256] = {
 0, 0, 0.01961, 0.0549, 0.08627, 0.1098, 0.13725, 0.15686, 0.18039, 0.2, 
 0.21569, 0.23529, 0.25098, 0.26275, 0.28235, 0.29412, 0.30588, 0.31765, 
@@ -427,5 +443,5 @@
 0.98824, 0.99216, 0.99216, 0.99216, 0.99216, 0.99608, 0.99608, 0.99608, 
 0.99608, 1, 1 };
-    static float rgb_g[256] = {
+    float rgb_g[256] = {
 0, 0, 0, 0, 0.00392, 0.00392, 0.00392, 0.00392, 0.00392, 0.00784, 
 0.00784, 0.00784, 0.00784, 0.01176, 0.01176, 0.01176, 0.01176, 0.01176, 
@@ -460,5 +476,5 @@
 0.89804, 0.9098, 0.91765, 0.92941, 0.94118, 0.94902, 0.96078, 0.97255, 
 0.98039, 0.99216 };
-    static float rgb_b[256] = {
+    float rgb_b[256] = {
 0, 0, 0, 0, 0.00392, 0.00392, 0.00392, 0.00392, 0.00392, 0.00784, 
 0.00784, 0.00784, 0.00784, 0.01176, 0.01176, 0.01176, 0.01176, 0.01176, 
Index: /trunk/SophyaPI/PI/picmap.h
===================================================================
--- /trunk/SophyaPI/PI/picmap.h	(revision 1123)
+++ /trunk/SophyaPI/PI/picmap.h	(revision 1124)
@@ -22,12 +22,15 @@
  CMAP_COLRJ128    = 8,     // 128 couleurs du rouge au jaune/blanc
  CMAP_COLBR128    = 9,     // 128 couleurs du bleu au rouge
- CMAP_COL16       = 10,    // 16 Couleurs Arcenciel
 
- // Tables de couleur importees de MIDAS
+ // Tables de couleur importees de MIDAS   256 couleurs
  CMAP_MIDAS_Pastel    = 101,   // Bleu-Violet-Rouge-Jaune
  CMAP_MIDAS_Heat      = 102,   // Noir-Rouge-Orange-Blanc
  CMAP_MIDAS_Rainbow3  = 103,   // Noir-Bleu-Vert-Jaune-Rouge-Violet-Blanc
  CMAP_MIDAS_BlueRed   = 104,   // Bleu-Violet-Rouge
- CMAP_MIDAS_BlueWhite = 105    // Noir-Bleu-Blanc
+ CMAP_MIDAS_BlueWhite = 105,   // Noir-Bleu-Blanc
+ CMAP_MIDAS_RedWhite  = 106,   // Noir-Rouge-Rose-Blanc
+
+ //  Table simple a 16 couleurs 
+ CMAP_COL16       = 999        // 16 Couleurs Arcenciel
  };
 
Index: /trunk/SophyaPI/PI/pidrwtools.cc
===================================================================
--- /trunk/SophyaPI/PI/pidrwtools.cc	(revision 1123)
+++ /trunk/SophyaPI/PI/pidrwtools.cc	(revision 1124)
@@ -186,14 +186,28 @@
 mOpt[1] = new PIOptMenu(this, "bwt-opt-1", bsx*1.75, bsy, cpx, cpy);
 mOpt[1]->AppendItem("No.CMap", 200);
-mOpt[1]->AppendItem("Grey32", 201);
-mOpt[1]->AppendItem("GreyInv32", 202);
-mOpt[1]->AppendItem("ColRJ32", 203);
-mOpt[1]->AppendItem("ColBR32", 204);
-mOpt[1]->AppendItem("ColRV32", 205);
-mOpt[1]->AppendItem("Grey128", 206);
-mOpt[1]->AppendItem("GreyInv128", 207);
-mOpt[1]->AppendItem("ColRJ128", 208);
-mOpt[1]->AppendItem("ColBR128", 209);
-mOpt[1]->AppendItem("Col16", 210);
+int kcc;
+//  Groupement des tables de couleurs
+mCasc[0] = new PIMenu(mOpt[1]->Menu(), "PIStd-128Col");
+mCasc[1] = new PIMenu(mOpt[1]->Menu(), "MIDAS-CMap");
+
+int nsct1,nsct2,nsct3;
+//  D'abord les tables standard de PI  32 couleurs
+nsct1 = 5;   // Les 5 premieres tables
+for(kcc=0; kcc<nsct1; kcc++) 
+  mOpt[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
+//  Ensuite les tables standard de PI  128 couleurs
+nsct2 = 9;   // Les 4 tables suivantes
+for(kcc=nsct1; kcc<nsct2; kcc++) 
+  mCasc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
+mOpt[1]->AppendPDMenu(mCasc[0]);
+//  Apres les tables importees de MIDAS
+nsct3 = PIColorMap::NumberStandardColorMaps()-1; // Les reste jusqu'a l'avant derniere
+for(kcc=nsct2; kcc<nsct3; kcc++) 
+  mCasc[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
+mOpt[1]->AppendPDMenu(mCasc[1]);
+// Les tables qui restent ( Col16 , ... )
+for(kcc=nsct3; kcc<PIColorMap::NumberStandardColorMaps(); kcc++) 
+mOpt[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
+
 mOpt[1]->SetValue(200);
 mOpt[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
@@ -316,4 +330,5 @@
 delete mButcf[3];
 for(i=0; i<6; i++)  delete mOpt[i];
+for(i=0; i<2; i++)  delete mCasc[i];
 delete mNlb;
 }
@@ -341,7 +356,4 @@
 static PIFontSize fntsz[5] = { PI_NotDefFontSize, PI_NormalSizeFont, PI_SmallSizeFont, 
                                PI_BigSizeFont, PI_HugeSizeFont };
-static CMapId cmap[11] = {  CMAP_OTHER, CMAP_GREY32, CMAP_GREYINV32,
-                            CMAP_COLRJ32, CMAP_COLBR32, CMAP_COLRV32,  
-                            CMAP_GREY128, CMAP_GREYINV128, CMAP_COLRJ128, CMAP_COLBR128, CMAP_COL16 };
 
 /* --Methode-- */
@@ -413,6 +425,7 @@
   if (fc == cols[kk])  { mOpt[0]->SetValue(100+kk);  break; }    
 CMapId cmi = dr->GetColMapId();
-for(kk=0; kk<11; kk++)
-  if (cmi == cmap[kk]) { mOpt[1]->SetValue(200+kk);  break; }  
+if (cmi == CMAP_OTHER)  mOpt[1]->SetValue(200);
+else for(kk=0; kk<PIColorMap::NumberStandardColorMaps(); kk++)
+  if (cmi == PIColorMap::GetStandardColorMapId(kk)) { mOpt[1]->SetValue(201+kk);  break; }  
 PIMarker mk = dr->GetMarker();   
 for(kk=0; kk<12; kk++) 
@@ -519,6 +532,6 @@
     drw->SetColAtt(cols[k]);
     k = mOpt[1]->GetValue()-200;
-    if ( (k < 0) || (k > 10) )  k = 0;
-    drw->SetColMapId(cmap[k]);
+    if (k == 0) drw->SetColMapId(CMAP_OTHER);
+    else drw->SetColMapId(PIColorMap::GetStandardColorMapId(k-1));
     k =  mOpt[2]->GetValue()-300;
     if ( (k < 0) || (k > 11) )  k = 0;
Index: /trunk/SophyaPI/PI/pidrwtools.h
===================================================================
--- /trunk/SophyaPI/PI/pidrwtools.h	(revision 1123)
+++ /trunk/SophyaPI/PI/pidrwtools.h	(revision 1124)
@@ -42,4 +42,5 @@
 // Pour couleur, fontes, etc 
   PIOptMenu* mOpt[6];
+  PIMenu* mCasc[5];
   PILabel* mNlb;
   PIButton* mButdr[2];
Index: /trunk/SophyaPI/PI/piimgtools.cc
===================================================================
--- /trunk/SophyaPI/PI/piimgtools.cc	(revision 1123)
+++ /trunk/SophyaPI/PI/piimgtools.cc	(revision 1124)
@@ -150,12 +150,26 @@
 mOptzc[0] = new PIOptMenu(this, "imglut-opt-3", bsx*1.75, bsy, cpx, cpy);
 int kcc;
-//  D'abord les tables standard de PI
-for(kcc=0; kcc<10; kcc++)  
+//  Groupement des tables de couleurs
+mCasc[0] = new PIMenu(mOptzc[0]->Menu(), "PIStd-128Col");
+mCasc[1] = new PIMenu(mOptzc[0]->Menu(), "MIDAS-CMap");
+
+int nsct1,nsct2,nsct3;
+//  D'abord les tables standard de PI  32 couleurs
+nsct1 = 5;   // Les 5 premieres tables
+for(kcc=0; kcc<nsct1; kcc++) 
   mOptzc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
-// Les tables ramenees de MIDAS
-mCaszc[0] = new PIMenu(mOptzc[0]->Menu(), "MIDAS-CMap");
-for(kcc=10; kcc<PIColorMap::NumberStandardColorMaps(); kcc++) 
-  mCaszc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
-mOptzc[0]->Menu()->AppendPDMenu(mCaszc[0]);
+//  Ensuite les tables standard de PI  128 couleurs
+nsct2 = 9;   // Les 4 tables suivantes
+for(kcc=nsct1; kcc<nsct2; kcc++) 
+  mCasc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
+mOptzc[0]->AppendPDMenu(mCasc[0]);
+//  Apres les tables importees de MIDAS
+nsct3 = PIColorMap::NumberStandardColorMaps()-1; // Les reste jusqu'a l'avant derniere
+for(kcc=nsct2; kcc<nsct3; kcc++) 
+  mCasc[1]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
+mOptzc[0]->AppendPDMenu(mCasc[1]);
+// Les tables qui restent ( Col16 , ... )
+for(kcc=nsct3; kcc<PIColorMap::NumberStandardColorMaps(); kcc++) 
+mOptzc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc);
 
 mOptzc[0]->SetValue(203);
@@ -267,5 +281,5 @@
   delete mOptzc[i];
   }
-delete mCaszc[0];
+for(i=0; i<2; i++)  delete mCasc[i];
 for(i=0; i<5; i++)  delete mButsz[i];
 for(i=0; i<3; i++)  delete mButcax[i];
Index: /trunk/SophyaPI/PI/piimgtools.h
===================================================================
--- /trunk/SophyaPI/PI/piimgtools.h	(revision 1123)
+++ /trunk/SophyaPI/PI/piimgtools.h	(revision 1124)
@@ -38,5 +38,5 @@
 // Pour la couleur et le zoom
   PIOptMenu* mOptzc[2];
-  PIMenu* mCaszc[2];
+  PIMenu* mCasc[5];
 // Pour expand et compress
   PIButton* mButsz[5];
Index: /trunk/SophyaPI/PI/pioptmenugen.h
===================================================================
--- /trunk/SophyaPI/PI/pioptmenugen.h	(revision 1123)
+++ /trunk/SophyaPI/PI/pioptmenugen.h	(revision 1124)
@@ -18,4 +18,6 @@
                                    { mMen->AppendItem(nom, msg); }
 
+  virtual void       AppendPDMenu(PIMenu* pdm) = 0;
+
   virtual string     GetValueStr() = 0;         // Option choisie
   virtual PIMessage  GetValue() = 0;            // Message correspondant a l option choisie
Index: /trunk/SophyaPI/PI/pioptmenux.cc
===================================================================
--- /trunk/SophyaPI/PI/pioptmenux.cc	(revision 1123)
+++ /trunk/SophyaPI/PI/pioptmenux.cc	(revision 1124)
@@ -80,4 +80,12 @@
 
 /* --Methode-- */
+void PIOptMenuX::AppendPDMenu(PIMenu* pdm)
+{
+  if (pdm == NULL)  return;
+  Menu()->AppendPDMenu(pdm);
+  mPDMList.push_back(pdm);
+}
+
+/* --Methode-- */
 void PIOptMenuX::Process(PIMessage msg, PIMsgHandler* sender, void* data)
 {
@@ -97,13 +105,22 @@
 Arg warg[2];
 n=mMen->GetNumItem((char *)s.c_str());
-if (n < 0)  return;  
-
-XtSetArg(warg[0], XmNmenuHistory, mMen->GetItemWdg(n));
-XtSetValues(XtWdg(), warg, 1);
-mStext = s;
-mSmsg  = mMen->ItemMsg(n);
-
-SetLabel(mStext);
-
+if (n < 0)  { // On verifie si c'est ds les PD Menu
+  list<PIMenu *>::iterator it;
+  for(it = mPDMList.begin(); it != mPDMList.end(); it++) 
+    if ((n= (*it)->GetNumItem((char *)s.c_str())) >= 0) {
+      mStext = s;
+      mSmsg  = (*it)->ItemMsg(n);
+      SetLabel(mStext);
+      break;
+    }
+return;
+}
+else {
+  XtSetArg(warg[0], XmNmenuHistory, mMen->GetItemWdg(n));
+  XtSetValues(XtWdg(), warg, 1);
+  mStext = s;
+  mSmsg  = mMen->ItemMsg(n);
+  SetLabel(mStext);
+}
 return;
 }
@@ -116,11 +133,22 @@
 
 n=mMen->GetNumItemMsg(msg);
-if (n < 0)  return;
-  
-XtSetArg(warg[0], XmNmenuHistory, mMen->GetItemWdg(n));
-XtSetValues(XtWdg(), warg, 1);
-mStext = mMen->ItemName(n);
-mSmsg  = msg;
-SetLabel(mStext);
+if (n < 0)  { // On verifie si c'est ds les PD Menu
+  list<PIMenu *>::iterator it;
+  for(it = mPDMList.begin(); it != mPDMList.end(); it++) 
+    if ((n= (*it)->GetNumItemMsg(msg)) >= 0) {
+      mStext = (*it)->ItemName(n);
+      mSmsg  = msg;
+      SetLabel(mStext);
+      break;
+    }
+return;
+}
+else {  
+  XtSetArg(warg[0], XmNmenuHistory, mMen->GetItemWdg(n));
+  XtSetValues(XtWdg(), warg, 1);
+  mSmsg  = msg;
+  mStext = mMen->ItemName(n);
+  SetLabel(mStext);
+}
 return;
 }
Index: /trunk/SophyaPI/PI/pioptmenux.h
===================================================================
--- /trunk/SophyaPI/PI/pioptmenux.h	(revision 1123)
+++ /trunk/SophyaPI/PI/pioptmenux.h	(revision 1124)
@@ -3,5 +3,7 @@
 
 #include "pisysdep.h"
+#include <list>
 #include "pioptmenugen.h"
+
 #include PISTDWDG_H
 
@@ -12,4 +14,6 @@
 
   virtual void	    FinishCreate(); 
+
+  virtual void      AppendPDMenu(PIMenu* pdm);
 
   virtual void      Process(PIMessage msg, PIMsgHandler* sender, void* data=NULL);
@@ -28,4 +32,5 @@
   string   mStext;
   PIMessage mSmsg;
+  list<PIMenu*> mPDMList;
 //  SysDWdg mLabel;
   GC mgc;
Index: /trunk/SophyaPI/PI/piversion.h
===================================================================
--- /trunk/SophyaPI/PI/piversion.h	(revision 1123)
+++ /trunk/SophyaPI/PI/piversion.h	(revision 1124)
@@ -2,5 +2,5 @@
 #define PIVERSION_H_SEEN
 
-#define PI_VERSIONNUMBER  2.6
+#define PI_VERSIONNUMBER  2.7
 
 #endif
