Index: /trunk/SophyaPI/PI/pidrawer.cc
===================================================================
--- /trunk/SophyaPI/PI/pidrawer.cc	(revision 1969)
+++ /trunk/SophyaPI/PI/pidrawer.cc	(revision 1970)
@@ -68,4 +68,8 @@
 PIDrawer::~PIDrawer()
 {
+  // Desactivation totale de la fenetre de controle specialise 
+  // ---> parametre d'appel PIBaseWdgGen* wdg=NULL
+  DeactivateControlWindow(NULL);
+
   list<DrwBWId>::iterator it;
   mDndfg = true;
@@ -265,4 +269,9 @@
   if (mDndfg) return;
   if (!wdg) return;
+
+  // Desactivation de la fenetre de controle specialisee pour la 
+  // base-widget duquel on se detache 
+  DeactivateControlWindow(wdg);
+
   list<DrwBWId>::iterator it;
   for(it = mBWdgList.begin(); it != mBWdgList.end(); it++)
@@ -279,8 +288,20 @@
 }
 
+//--------------------------------------------------------------
+// Methode de desactivation de la fenetre de controle specialise
+// Cette methode est appellee dans deux cas :
+// 1/ lors de la destruction du drawer
+//    Dans ce cas, le parametre PIBaseWdgGen* wdg = NULL
+// 2/ Lorsque le drawer est detache d'un PIBaseWdg 
+//    Dans ce cas, le parametre PIBaseWdgGen* wdg pointe vers le 
+//    PIBaseWdg duquel le drawer est detache
+// Evidemment, "this" pointe toujours sur le drawer qui est 
+// en cours de destruction ou de detachement
+//--------------------------------------------------------------
 void
 PIDrawer::DeactivateControlWindow(PIBaseWdgGen* wdg)
 {
-  // On affiche par defaut la fenetre de gestion des attributs graphiques
+  // Par defaut, il n'y a pas de fenetre de controle specialise
+  // Donc, on ne fait rien 
 }
 
@@ -288,5 +309,5 @@
 PIDrawer::DecodeOptionString(vector<string> & opt, bool rmdecop)
 {
-  if (opt.size() == 0)  return(0);  
+  if (opt.size() < 1)  return(0);  
   PIGraphicAtt gratt;
   int ndec = gratt.DecodeAttStrings(opt, rmdecop);
Index: /trunk/SophyaPI/PI/pieldrw.cc
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.cc	(revision 1969)
+++ /trunk/SophyaPI/PI/pieldrw.cc	(revision 1970)
@@ -45,4 +45,5 @@
 mEn = 0;
 titleT = titleB = "";
+ShowTitles();
 }
 
@@ -76,6 +77,7 @@
 int PIElDrawer::DecodeOptionString(vector<string> & opt, bool rmdecopt)
 {
-  if (opt.size() == 0)  return(0);  
+  if (opt.size() < 1)  return(0);  
   int ndec1 = PIDrawer::DecodeOptionString(opt, rmdecopt);
+  if ((opt.size() - ndec1) < 1) return(ndec1);  // si tout a ete decode
   vector<string> udopt;
   unsigned int k = 0;
@@ -83,35 +85,25 @@
   for( k=0; k<opt.size(); k++ ) {
     string opts = opt[k];
-    if ( (opts == "stdaxes") || (opts == "defaxes") || (opts == "boxaxes") ) {
+    if ( (opts == "stdaxes") || (opts == "defaxes") || (opts == "boxaxes") ) 
       SetAxesFlags(kBoxAxes | kExtTicks | kLabels);
-      continue;
-    }
-    if (opts == "simpleaxes") {
+    else if (opts == "simpleaxes") 
       SetAxesFlags(kAxesDflt);
-      continue;      
-    }
-    if (opts == "boxaxesgrid") {
+    else if (opts == "boxaxesgrid") 
       SetAxesFlags(kBoxAxes | kExtTicks | kLabels | kGridOn);
-      continue;      
-    }
-    if (opts == "fineaxes") {
+    else if (opts == "fineaxes") 
       SetAxesFlags(kBoxAxes | kTicks | kLabels | kMinTicks | kMajTicks);
-      continue;      
-    }
-    if ((opts == "grid") || (opts == "fineaxesgrid")) {
+    else if ((opts == "grid") || (opts == "fineaxesgrid")) 
       SetAxesFlags(kBoxAxes | kTicks | kLabels | kMinTicks | kMajTicks | kGridOn);
-      continue;      
-    }
-    if (opts == "autofontsize") {
+    else if (opts == "autofontsize") 
       SetAxesAutoFontSize(true);
-      continue;      
-    }
-    if (opts == "fixedfontsize") {
+    else if (opts == "fixedfontsize") 
       SetAxesAutoFontSize(false);
-      continue;      
-    }
-
-    ndec--;
-    if (rmdecopt)  udopt.push_back(opts);
+    else if (opts == "title") ShowTitles(true);
+    else if (opts == "notitle") ShowTitles(false);
+
+    else {
+      ndec--;
+      if (rmdecopt)  udopt.push_back(opts);
+    }
   }  
 
@@ -158,5 +150,5 @@
 
 // Trace des titres 
-if ( (titleT.length() > 0) || (titleB.length() > 0) ) {
+if ( showTitles && ((titleT.length() > 0) || (titleB.length() > 0)) ) {
   aXdir = false;  // Vrai si Axe X de Droite vers Gauche 
   aYdir = false;  // Vrai si Axe Y de Haut vers Bas
Index: /trunk/SophyaPI/PI/pieldrw.h
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.h	(revision 1969)
+++ /trunk/SophyaPI/PI/pieldrw.h	(revision 1970)
@@ -22,4 +22,6 @@
   virtual void	     SetTitles(const char* tt=NULL, const char* tb=NULL);
   virtual void       SetTitles(string const & tt, string const & tb);
+  
+  inline void        ShowTitles(bool fg=true) { showTitles = fg; }
 
 //   Methode de decodage des options
@@ -69,4 +71,5 @@
 
   string titleT, titleB;       // Titre Haut - Bas
+  bool showTitles;              // Affichage des titres si true
 
 };
Index: /trunk/SophyaPI/PI/pigratt.cc
===================================================================
--- /trunk/SophyaPI/PI/pigratt.cc	(revision 1969)
+++ /trunk/SophyaPI/PI/pigratt.cc	(revision 1970)
@@ -10,4 +10,5 @@
 PIGraphicAtt::PIGraphicAtt()
 {
+  InitGrAttStrings();   // Init attributes decoding maps
   SetDefaultAtt();
 }
@@ -15,4 +16,5 @@
 PIGraphicAtt::PIGraphicAtt(PIGraphicAtt const & att)
 {
+  InitGrAttStrings();   // Init attributes decoding maps
   CopyFrom(att);
 }
@@ -20,4 +22,5 @@
 PIGraphicAtt::PIGraphicAtt(vector<string> & att, bool rmdecatt)
 {
+  InitGrAttStrings();   // Init attributes decoding maps
   // Initialize attributes
   SetDefaultAtt();
@@ -36,4 +39,5 @@
   SetLineAtt();
   SetFontAtt();
+  mNotDefFnt = false;
   SetMarkerAtt(1);
   SetArrowMarkerAtt(5);
@@ -47,4 +51,5 @@
   mLAtt = att.mLAtt;
   mFnt = att.mFnt;
+  mNotDefFnt = att.mNotDefFnt;
   mMSz = att.mMSz;
   mMrk = att.mMrk;
@@ -81,7 +86,8 @@
   if (att.mBCol != PI_NotDefColor)  mBCol = att.mBCol;
   if (att.mLAtt != PI_NotDefLineAtt)  mLAtt = att.mLAtt;
-  if ( (att.mFnt.GetFontName() != PI_DefaultFont) || 
-       (att.mFnt.GetFontAtt() != PI_NotDefFontAtt) ||
-       (att.mFnt.GetFontSize() != PI_NotDefFontSize) )  mFnt = att.mFnt;
+  if (att.mNotDefFnt) mFnt = att.mFnt;
+  //  if ( (att.mFnt.GetFontName() != PI_DefaultFont) || 
+  //       (att.mFnt.GetFontAtt() != PI_NotDefFontAtt) ||
+  //     (att.mFnt.GetFontSize() != PI_NotDefFontSize) )  mFnt = att.mFnt;
   if (att.mMrk != PI_NotDefMarker) {
     mMSz = att.mMSz;
@@ -101,4 +107,5 @@
 void PIGraphicAtt::SetFontAtt(PIFontSize fsz, PIFontAtt fat)
 {
+  mNotDefFnt = true;
   mFnt.SetFontAtt(fat);
   mFnt.SetFontSz(fsz);
@@ -107,4 +114,5 @@
 void PIGraphicAtt::SetFontAtt(PIFontName fn, PIFontSize fsz, PIFontAtt fat)
 {
+  mNotDefFnt = true;
   mFnt.SetFont(fn);
   mFnt.SetFontAtt(fat);
@@ -404,5 +412,6 @@
     GrAttFontNames::const_iterator itfn = GrAfontnm.find(gratt);
     if (itfn != GrAfontnm.end()) { 
-      mFnt.SetFont((*itfn).second);  continue; 
+      mFnt.SetFont((*itfn).second);  
+      mNotDefFnt = true;  continue; 
     }
     // Si c'est un attribut de fontes
@@ -411,6 +420,6 @@
     if (itfa != GrAfnt.end()) {
       mFnt.SetFontAtt((*itfa).second.fatt);  
-      mFnt.SetFontSz((*itfa).second.fsz);  
-      continue; 
+      mFnt.SetFontSz((*itfa).second.fsz); 
+      mNotDefFnt = true;  continue; 
     }
     // Si c'est un attribut de markers
Index: /trunk/SophyaPI/PI/pigratt.h
===================================================================
--- /trunk/SophyaPI/PI/pigratt.h	(revision 1969)
+++ /trunk/SophyaPI/PI/pigratt.h	(revision 1970)
@@ -39,5 +39,5 @@
   inline void    SetLineAtt(PILineAtt const & lat)  { mLAtt = lat; }
   inline void    SetLineAtt(PILineTypes ltyp=PI_NotDefLineAtt)  { mLAtt = ltyp; }
-  inline void    SetFont(PIFont const & fnt)  { mFnt = fnt; } 
+  inline void    SetFont(PIFont const & fnt)  { mNotDefFnt = true; mFnt = fnt; } 
          void    SetFontAtt(PIFontSize fsz=PI_NotDefFontSize,
 			    PIFontAtt fat=PI_NotDefFontAtt);
@@ -82,4 +82,5 @@
   PILineAtt          mLAtt;
   PIFont             mFnt;
+  bool               mNotDefFnt;    // Si True --> Pas la fonte par defaut 
   int                mMSz;
   PIMarker           mMrk;  
Index: /trunk/SophyaPI/PI/piscdrawwdg.cc
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 1969)
+++ /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 1970)
@@ -245,4 +245,27 @@
       continue;
     }
+    /*
+    les attributs d'axes sont decodes par PIElDrawer
+    if (opts == "simpleaxes")  {
+      SetAxesFlags(kAxesDflt);
+      continue;
+    }
+    if ( (opts == "stdaxes")  || (opts == "boxaxes") ) {
+      SetAxesFlags(kBoxAxes | kExtTicks | kLabels);
+      continue;
+    }
+    if (opts == "boxaxesgrid")  {
+      SetAxesFlags(kBoxAxes | kExtTicks | kLabels | kGridOn);
+      continue;
+    }
+    if (opts == "fineaxes")  {
+      SetAxesFlags(kBoxAxes | kTicks | kLabels | kMinTicks | kMajTicks);
+      continue;
+    }
+    if (opts == "fineaxesgrid")  {
+      SetAxesFlags(kBoxAxes | kTicks | kLabels | kMinTicks | kMajTicks | kGridOn);
+      continue;
+    }
+    */
 
     ndec--;
Index: /trunk/SophyaPI/PI/piversion.h
===================================================================
--- /trunk/SophyaPI/PI/piversion.h	(revision 1969)
+++ /trunk/SophyaPI/PI/piversion.h	(revision 1970)
@@ -2,5 +2,5 @@
 #define PIVERSION_H_SEEN
 
-#define PI_VERSIONNUMBER  3.63
+#define PI_VERSIONNUMBER  3.65
 
 #endif
