Index: /trunk/SophyaPI/PI/pilistgen.h
===================================================================
--- /trunk/SophyaPI/PI/pilistgen.h	(revision 53)
+++ /trunk/SophyaPI/PI/pilistgen.h	(revision 54)
@@ -14,6 +14,6 @@
 	             ~PIListGen();
 				   
-  virtual void	     AppendItem(char* item, PIMessage msg)=0;
-  virtual void       DeleteItem(char *item)=0;
+  virtual void	     AppendItem(const char * item, PIMessage msg)=0;
+  virtual void       DeleteItem(const char *item)=0;
   virtual void       DeleteItem(PIMessage msg)=0;
   
@@ -24,7 +24,7 @@
   virtual string     GetSelectionStr(int num=0)=0;
 
-  virtual void       SelectItem(char *item)=0;
+  virtual void       SelectItem(const char * item)=0;
   virtual void       SelectItem(PIMessage msg)=0;
-  virtual void       ClearSelItem(char *item)=0;
+  virtual void       ClearSelItem(const char * item)=0;
   virtual void       ClearSelItem(PIMessage msg)=0;
 
Index: /trunk/SophyaPI/PI/pilistx.cc
===================================================================
--- /trunk/SophyaPI/PI/pilistx.cc	(revision 53)
+++ /trunk/SophyaPI/PI/pilistx.cc	(revision 54)
@@ -22,7 +22,7 @@
 
 pil = (PIListX *)usd ;
-pil->ToggleSel(isel->item_position, true);
-//printf("list_action/Debug: reason=%d itemPos= %d \n", 
-//isel->reason, isel->item_position);
+//  printf("list_action/Debug: reason=%d itemPos= %d \n", 
+//          isel->reason, isel->item_position);
+pil->ToggleSel(isel->item_position-1, true);
 return;
 }
@@ -82,5 +82,5 @@
 
 /* --Methode-- */
-void PIListX::AppendItem(char* item, PIMessage msg)
+void PIListX::AppendItem(const char * item, PIMessage msg)
 {
 
@@ -114,5 +114,5 @@
 
 /* --Methode-- */
-void PIListX::DeleteItem(char *item)
+void PIListX::DeleteItem(const char * item)
 {
 int n;
@@ -155,4 +155,5 @@
 PIMessage PIListX::GetSelection(int num)
 {
+if ( (num < 0) || (num >= mNbSel) ) return(0); 
 return(ItemMsg(mSelNum[num]));
 }
@@ -161,4 +162,5 @@
 string PIListX::GetSelectionStr(int num)
 {
+if ( (num < 0) || (num >= mNbSel) ) return(""); 
 string s(ItemStr(mSelNum[num]));
 return(s);
@@ -166,10 +168,10 @@
 
 /* --Methode-- */
-void PIListX::SelectItem(char * item)
+void PIListX::SelectItem(const char * item)
 {
 int n;
 if ((n=GetNumItem(item)) < 0)  return;
-if ((!mMultSel) && (mNbSel > 0) && (mSelNum[0] != n))
-  ClrSItem(mSelNum[0], false, true);  
+if ((!mMultSel) && (mNbSel > 0))
+  if  (mSelNum[0] != n)  ClrSItem(mSelNum[0], false, true);  
 SelItem(n, false, true);
 return;
@@ -181,6 +183,6 @@
 int n;
 if ((n=GetNumItemMsg(msg)) < 0)  return;
-if ((!mMultSel) && (mNbSel > 0) && (mSelNum[0] != n))
-  ClrSItem(mSelNum[0], false, true);  
+if ((!mMultSel) && (mNbSel > 0))
+  if  (mSelNum[0] != n)  ClrSItem(mSelNum[0], false, true);  
 SelItem(n, false, true);
 return;
@@ -189,5 +191,5 @@
 
 /* --Methode-- */
-void PIListX::ClearSelItem(char * item)
+void PIListX::ClearSelItem(const char * item)
 {
 int n;
@@ -231,8 +233,8 @@
 {
 Arg  warg[2];
-XmString *xmst;
+XmString *xmst=NULL;
 
 if ( (n < 0) || (n >= mNItem))  { mSItem[0] = '\0'; return(mSItem); }
-
+mSItem[0] = '\0';
 XtSetArg(warg[0], XmNitems, &xmst);  
 XtGetValues(mlist, warg, 1);
@@ -242,5 +244,5 @@
 
 /* --Methode-- */
-int PIListX::GetNumItem(char *it)
+int PIListX::GetNumItem(const char *it)
 {
 for(int i=0; i<mNItem; i++)
@@ -343,5 +345,5 @@
   XmListDeselectPos(mlist, n+1);
 
-delete[] mSelNum;
+if (mSelNum) delete[] mSelNum;
 if (mNbSel <= 0)
   { mNSelMax = mNbSel = 0;  mSelNum = NULL; }
Index: /trunk/SophyaPI/PI/pilistx.h
===================================================================
--- /trunk/SophyaPI/PI/pilistx.h	(revision 53)
+++ /trunk/SophyaPI/PI/pilistx.h	(revision 54)
@@ -10,6 +10,6 @@
 	             ~PIListX();
 				   
-  virtual void	     AppendItem(char* item, PIMessage msg);
-  virtual void       DeleteItem(char *item);
+  virtual void	     AppendItem(const char * item, PIMessage msg);
+  virtual void       DeleteItem(const char *item);
   virtual void       DeleteItem(PIMessage msg);
 
@@ -20,7 +20,7 @@
   virtual string     GetSelectionStr(int num=0);
 
-  virtual void       SelectItem(char * item);
+  virtual void       SelectItem(const char * item);
   virtual void       SelectItem(PIMessage msg);
-  virtual void       ClearSelItem(char * item);
+  virtual void       ClearSelItem(const char * item);
   virtual void       ClearSelItem(PIMessage msg);
 
@@ -31,5 +31,5 @@
   PIMessage          ItemMsg(int n);
   char *             ItemStr(int n);
-  int                GetNumItem(char *nom);
+  int                GetNumItem(const char * nom);
   int                GetNumItemMsg(PIMessage msg);
   void               DelItem(int n);
Index: /trunk/SophyaPI/PI/piscdrawwdg.cc
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 53)
+++ /trunk/SophyaPI/PI/piscdrawwdg.cc	(revision 54)
@@ -134,6 +134,8 @@
   vector<PIScDrawer*>::iterator drw;
   for(drw = mScDrawers.begin(); drw != mScDrawers.end(); drw++) {
+    SaveGraphicAtt();
     (*drw)->SelGraAtt();
     (*drw)->Draw(xmin, ymin, xmax, ymax);
+    RestoreGraphicAtt();
   }
 }
Index: /trunk/SophyaPI/PI/piscdrawwdg.h
===================================================================
--- /trunk/SophyaPI/PI/piscdrawwdg.h	(revision 53)
+++ /trunk/SophyaPI/PI/piscdrawwdg.h	(revision 54)
@@ -16,7 +16,11 @@
 class PIScDrawWdg : public PIBaseWdg {
 public:
+  enum {ClassId = 5300};
+
                      PIScDrawWdg(PIContainerGen *par, char *nom,
                                    int sx=10, int sy=10, int px=0, int py=0);
-  virtual           ~PIScDrawWdg();
+  virtual            ~PIScDrawWdg();
+
+  virtual long       kind() {return ClassId; }
 
   virtual void       Resize();
Index: /trunk/SophyaPI/PI/psfile.cc
===================================================================
--- /trunk/SophyaPI/PI/psfile.cc	(revision 53)
+++ /trunk/SophyaPI/PI/psfile.cc	(revision 54)
@@ -256,5 +256,5 @@
  *
  */
-PSFile::PSFile(char * FileName, float sc) 
+PSFile::PSFile(const char * FileName, float sc) 
     : mPSFileName(FileName==NULL? "unnamed.eps" : FileName),
       Tw (-1.), Th(-1.),         /* Non specifies pour du eps  */
@@ -313,5 +313,5 @@
  *
  */
-PSFile::PSFile(char *FileName,
+PSFile::PSFile(const char *FileName,
 	       PIOrientation orientation,
 	       PIPaperSize   paperSize,
Index: /trunk/SophyaPI/PI/psfile.h
===================================================================
--- /trunk/SophyaPI/PI/psfile.h	(revision 53)
+++ /trunk/SophyaPI/PI/psfile.h	(revision 54)
@@ -69,7 +69,7 @@
 public:
     /* Production fichier eps */
-    PSFile (char * FileName, float sc = 1.0);
+    PSFile (const char * FileName, float sc = 1.0);
     /* Production fichier ps  */
-    PSFile (char * FileName, PIOrientation orientation, 
+    PSFile (const char * FileName, PIOrientation orientation, 
 	    PIPaperSize paperSize= PI_A4, 
 	    float marginX = 1.0, float marginY = 1.0 ) ;
