Index: /trunk/SophyaPI/PI/piaxes.cc
===================================================================
--- /trunk/SophyaPI/PI/piaxes.cc	(revision 2165)
+++ /trunk/SophyaPI/PI/piaxes.cc	(revision 2166)
@@ -103,5 +103,12 @@
     g->DrawLine(xMin, (yMin+yMax)/2., xMax, (yMin+yMax)/2.);
     g->DrawLine((xMin+xMax)/2., yMin, (xMin+xMax)/2., yMax);
-
+    PIArrowMarker amk = g->GetArrowMarker();
+    if (amk == PI_NotDefArrowMarker) amk = PI_FArrowShapedArrowMarker;
+    g->SelArrowMarkerSz(xMajTickLen*2., amk);
+    //    g->SelArrowMarker(5, g->GetArrowMarker());
+    double xm2 = g->DeltaUCX(xMax, yMajTickLen*3.);
+    g->DrawArrowMarker(xMax, (yMin+yMax)/2., xm2, (yMin+yMax)/2., true);
+    double ym2 = g->DeltaUCY(yMax, xMajTickLen*3.);
+    g->DrawArrowMarker((xMin+xMax)/2., yMax, (xMin+xMax)/2., ym2, true);
     // La grille en pointilles
 
@@ -216,15 +223,18 @@
   if (fcol != PI_NotDefColor)    g->SelForeground(fcol);
 
-  double fy, fh;
-  fh = 0.090*(yMax-yMin);  
+  double fx,fy,fh;
   if (flags&kBoxAxes) { 
+    fh = -0.090*(yMax-yMin);  
     if (g->isAxeYDirUpDown()) fy = yMax;
     else fy = yMin;
   }
-
-  else fy = 0.5*(yMin+yMax);
-  if (g->isAxeYDirUpDown()) fy += fh;
-  else fy -= fh;
-  g->DrawString(xMax-(xMax-xMin)*0.30, fy, xLabel.c_str(), 
+  else {
+    fh = 0.04*(yMax-yMin);  
+    fy = 0.5*(yMin+yMax);
+  }
+  if (g->isAxeYDirUpDown()) fh = -fh;
+  fy = g->DeltaUCY(fy, fh);
+  fx = g->DeltaUCX(xMax, -(xMax-xMin)*0.25);
+  g->DrawString(fx, fy, xLabel.c_str(), 
 		PI_HorizontalCenter | PI_VerticalCenter);  
 }
@@ -245,19 +255,22 @@
   if (fcol != PI_NotDefColor)    g->SelForeground(fcol);
 
-  double fx, fh;
-  fh = 0.125*(xMax-xMin);
-  if (yLabel.length() > 0) {
-    if (flags&kBoxAxes) { 
-      if (g->isAxeXDirRtoL()) fx = xMax;
-      else fx = xMin;
-    }
-    else fx = 0.5*(xMin+xMax);
-    if (g->isAxeXDirRtoL()) fx += fh;
-    else fx -= fh;
-    unsigned long txtflg = PI_HorizontalCenter | PI_VerticalCenter | PI_TextDirectionVerticalUp;
-    if (g->isAxeYDirUpDown()) 
-      txtflg = PI_HorizontalCenter | PI_VerticalCenter | PI_TextDirectionVerticalDown;
-    g->DrawString(fx, yMax-(yMax-yMin)*0.30, yLabel.c_str(), txtflg);
-  }
+  double fx,fy,fh;
+  if (flags&kBoxAxes) { 
+    fh = -0.125*(xMax-xMin);
+    if (g->isAxeXDirRtoL()) fx = xMax;
+    else fx = xMin;
+  }
+  else {
+    fh = 0.04*(xMax-xMin);
+    fx = 0.5*(xMin+xMax);
+  }
+  if (g->isAxeXDirRtoL()) fh = -fh;
+  fx = g->DeltaUCX(fx, fh);
+  fy = g->DeltaUCY(yMax,-(yMax-yMin)*0.25);
+  unsigned long txtflg = PI_HorizontalCenter | PI_VerticalCenter | PI_TextDirectionVerticalUp;
+  if (g->isAxeYDirUpDown()) 
+    txtflg = PI_HorizontalCenter | PI_VerticalCenter | PI_TextDirectionVerticalDown;
+  g->DrawString(fx, fy, yLabel.c_str(), txtflg);
+  
 }
 
Index: /trunk/SophyaPI/PI/piaxestools.cc
===================================================================
--- /trunk/SophyaPI/PI/piaxestools.cc	(revision 2165)
+++ /trunk/SophyaPI/PI/piaxestools.cc	(revision 2166)
@@ -87,5 +87,5 @@
 
 int wszx = 6*spx+3.5*bsx; 
-int wszy = 7*bsy+9*spy;
+int wszy = 8*bsy+10*spy;
 SetSize(wszx, wszy);
 
@@ -125,4 +125,13 @@
 mCkb[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
 mCkb[4]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
+
+cpx = spx+0.25*bsx;
+cpy += spy+bsy;
+mCkb[5] = new PICheckBox(this,"Centerd-Axes", 2005, 1.5*bsx, bsy, cpx, cpy);
+cpx += 3*spx+1.5*bsx; 
+mCkb[6] = new PICheckBox(this,"Minor-Ticks", 2006, 1.5*bsx, bsy, cpx, cpy);
+mCkb[5]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
+mCkb[6]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
+
 
 cpy += spy+bsy; 
@@ -176,5 +185,5 @@
 for(i=0;i<2;i++) delete mText[i];
 for(i=0;i<8;i++) delete mBut[i];
-for(i=0;i<5;i++) delete mCkb[i];
+for(i=0;i<7;i++) delete mCkb[i];
 delete mOpt;
 }
@@ -206,6 +215,13 @@
   scd->GetAxesConfig(xa, ya);
   if (xa & kAxeDirRtoL) mCkb[0]->SetState(true);
+  else mCkb[0]->SetState(false);
   if (ya & kAxeDirUpDown)  mCkb[1]->SetState(true);
+  else mCkb[1]->SetState(false);
   if (scd->GetAxesFlags() & kGridOn) mCkb[2]->SetState(true);
+  else mCkb[2]->SetState(false);
+  if (scd->GetAxesFlags() & kStdAxes) mCkb[5]->SetState(true);
+  else mCkb[5]->SetState(false);
+  if (scd->GetAxesFlags() & kMinTicks) mCkb[6]->SetState(true);
+  else mCkb[6]->SetState(false);
   mCkb[3]->SetState(scd->isLogScaleX());
   mCkb[4]->SetState(scd->isLogScaleY());
@@ -270,6 +286,14 @@
   scd->SetLimits(xmin, xmax, ymin, ymax, axrl, ayud);
   unsigned int flags = scd->GetAxesFlags();
-  if (mCkb[2]->GetState()) scd->SetAxesFlags(flags | kGridOn);
-  else  scd->SetAxesFlags(flags & ~kGridOn);
+
+  if (mCkb[2]->GetState()) flags |= kGridOn;
+  else  flags &= ~kGridOn;
+  if (mCkb[5]->GetState()) { flags |= kStdAxes;  flags &= ~kBoxAxes; }
+  else { flags &= ~kStdAxes;  flags |= kBoxAxes; }
+  if (mCkb[6]->GetState()) flags |= kMinTicks;
+  else  flags &= ~kMinTicks;
+
+  scd->SetAxesFlags(flags);
+
   scd->SetLogScale(mCkb[3]->GetState(), mCkb[4]->GetState() );
 
Index: /trunk/SophyaPI/PI/piaxestools.h
===================================================================
--- /trunk/SophyaPI/PI/piaxestools.h	(revision 2165)
+++ /trunk/SophyaPI/PI/piaxestools.h	(revision 2166)
@@ -40,5 +40,5 @@
   PIButton* mBut[8];
   PIText* mText[2];
-  PICheckBox* mCkb[5];
+  PICheckBox* mCkb[7];
   PIOptMenu * mOpt;
   unsigned short mTypAction;
Index: /trunk/SophyaPI/PI/pieldrw.cc
===================================================================
--- /trunk/SophyaPI/PI/pieldrw.cc	(revision 2165)
+++ /trunk/SophyaPI/PI/pieldrw.cc	(revision 2166)
@@ -341,4 +341,5 @@
   }
   g->Clip();
+  g->RestoreGraphicAtt(); 
 }
 
@@ -346,8 +347,8 @@
 void  PIElDrawer::Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax)
 {
-SelGraAtt(g);   // DrawAxes change certains attributs graphiques
+SelGraAtt(g);   
 DrawAxes(g);   // Trace des axes 
-g->SelFont(PI_NormalSizeFont);
-SelGraAtt(g);   // DrawAxes change certains attributs graphiques
+// g->SelFont(PI_NormalSizeFont);
+
 
 // Trace des titres 
@@ -360,26 +361,28 @@
   aYdir = false;  // Vrai si Axe Y de Haut vers Bas
   double fx, fy, fh;
+  fx = g->DeltaUCX(XMin(), 0.5*(XMax()-XMin()));
+		   
 //  fh = g->GetFontHeightUC(gas, gds);
   fh = 0.075*(YMax()-YMin());
   if ( titleT.length() > 0) {
-      if (g->isAxeYDirUpDown()) fy = g->DeltaUCY(YMin(), -fh);
-      else fy = g->DeltaUCY(YMax(), fh);
-      g->DrawString((XMax()+XMin())*0.5, fy, titleT.c_str(), PI_HorizontalCenter | PI_VerticalCenter);
-//      printf(" PIElDrawer::Draw()/DBG (%g , %g) %s  - %g \n", fx, fy, titleT.c_str(), fh);
-    }
+    if (g->isAxeYDirUpDown()) fy = g->DeltaUCY(YMin(), -fh);
+    else fy = g->DeltaUCY(YMax(), fh);
+    g->DrawString(fx, fy, titleT.c_str(), PI_HorizontalCenter | PI_VerticalCenter);
+    //      printf(" PIElDrawer::Draw()/DBG (%g , %g) %s  - %g \n", fx, fy, titleT.c_str(), fh);
+  }
   if ( titleB.length() > 0) {
-      fx = g->CalcStringWidth(titleB.c_str());
-      if(aXdir) fx = g->DeltaUCX(XMax(), -(XMax()-XMin()-fx)/2.);
-      else fx = g->DeltaUCX(XMin(), (XMax()-XMin()-fx)/2.);
-      if (g->isAxeYDirUpDown()) fy =  g->DeltaUCY(YMax(), fh*1.5);
-      else fy = g->DeltaUCY(YMin(), -fh*1.5);
-      g->DrawString((XMax()+XMin())*0.5, fy, titleB.c_str(), PI_HorizontalCenter | PI_VerticalCenter);
-//      printf(" PIElDrawer::Draw()/DBG (%g , %g) %s  - %g \n", fx, fy, titleT.c_str(), fh);
-    }
-  SetGraphicAtt(grs);
-  }
-
+    fx = g->CalcStringWidth(titleB.c_str());
+    if(aXdir) fx = g->DeltaUCX(XMax(), -(XMax()-XMin()-fx)/2.);
+    else fx = g->DeltaUCX(XMin(), (XMax()-XMin()-fx)/2.);
+    if (g->isAxeYDirUpDown()) fy =  g->DeltaUCY(YMax(), fh*1.5);
+    else fy = g->DeltaUCY(YMin(), -fh*1.5);
+    g->DrawString(fx, fy, titleB.c_str(), PI_HorizontalCenter | PI_VerticalCenter);
+    //      printf(" PIElDrawer::Draw()/DBG (%g , %g) %s  - %g \n", fx, fy, titleT.c_str(), fh);
+  }
+  SetGraphicAtt(grs); 
+}
+ g->RestoreGraphicAtt();
  SelGraAtt(g);
-// Trace des elements
+ // Trace des elements
  ElDrwMgr().DrawElements(g, xmin, ymin, xmax, ymax);
 
Index: /trunk/SophyaPI/PI/pigraphuc.cc
===================================================================
--- /trunk/SophyaPI/PI/pigraphuc.cc	(revision 2165)
+++ /trunk/SophyaPI/PI/pigraphuc.cc	(revision 2166)
@@ -837,5 +837,7 @@
   double fx, fy;
   DUC2GrC((double)arrsz, (double)arrsz, fx, fy);
-  int asz = int(0.5*(fx+fy+1));
+  int asz = int(fy+0.5);
+  if (asz < 3) asz = 3;
+  if (asz > 127) asz = 127;
   mGrC->SelArrowMarker(asz, arrmrk);
 }
