Index: trunk/SophyaPI/PIext/nobjmgr.cc
===================================================================
--- trunk/SophyaPI/PIext/nobjmgr.cc	(revision 2697)
+++ trunk/SophyaPI/PIext/nobjmgr.cc	(revision 2701)
@@ -1047,9 +1047,9 @@
 {
 ZSync(*myMutex);
+#ifdef SANS_EVOLPLANCK
 bool ok = true;
 PPersist* obj=NULL;
 
 PInPersist* ppin=NULL;
-#ifdef SANS_EVOLPLANCK
 TRY{
   ppin = new PInPersist(flnm);
@@ -1058,16 +1058,6 @@
 }  CATCH(merr) 
   { printf("NamedObjMgr::ReadAll()/Error Exception= %ld (%s) \n", 
-    (long)merr, PeidaExc(merr));  ok = false; } ENDTRY;
-#else
-try {
-  ppin = new PInPersist(flnm);
-  if (ppin->NbNameTags() < 1)  obj = ppin->ReadObject();
-  else   obj = NULL; 
-}
-catch (IOExc iox) {
-    cerr << "NamedObjMgr::ReadAll()/Error Exception - Msg= " << iox.Msg() << endl;
-    ok = false;
-}
-#endif
+    (long)merr, PeidaExc(merr));  ok = false; } 
+ENDTRY;
 if (!ok)  return;
 if (obj) {
@@ -1077,4 +1067,32 @@
 else ReadObj((*ppin), -1);
 delete ppin;
+#else
+try {
+  PInPersist pis(flnm);
+  if (pis.NbNameTags() >= 1)  { 
+    if (pis.NbNameTags() < pis.NbTopLevelObjects()) { 
+      cout << "NamedObjMgr::ReadAll()/Warning File " << flnm << " NbNameTags="
+	   << pis.NbNameTags() << " < NbTopLevelObjects= " 
+	   << pis.NbTopLevelObjects() << endl;
+      cout << " ... Reading " << pis.NbNameTags() << " objects at NameTags " ;
+    }
+    ReadObj(pis, -1);
+    return;
+  }
+
+  string nom = servnobjm->FileName2Name(flnm);  
+  int kn = 1;
+  for(int ii=0; ii<pis.NbTopLevelObjects(); ii++) {
+    PPersist* obj = pis.ReadObject();
+    if (!obj) continue;
+    AddObj_P(obj->DataObj(), nom, false);
+    kn++;
+    nom += (string)MuTyV(kn);
+  }
+}
+catch (IOExc& iox) {
+  cerr << "NamedObjMgr::ReadAll()/Error Exception - Msg= " << iox.Msg() << endl;
+}
+#endif
 return;
 }
Index: trunk/SophyaPI/PIext/nomhistadapter.cc
===================================================================
--- trunk/SophyaPI/PIext/nomhistadapter.cc	(revision 2697)
+++ trunk/SophyaPI/PIext/nomhistadapter.cc	(revision 2701)
@@ -18,4 +18,5 @@
 // Pour les DataTable ( Depuis Avril 2005 )
 #include "datatable.h"
+#include "swppfdtable.h"
 #endif
 
@@ -620,5 +621,9 @@
   DataTable* dt = dynamic_cast<DataTable *>(mDT);
   if (dt) return ("DataTable ");
-  else return  ("BaseDataTable ");
+  else { 
+    SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
+    if (swdt) return ("SwPPFDataTable ");
+    return  ("BaseDataTable ");
+  }
 }
 
@@ -628,5 +633,9 @@
   DataTable* dt = dynamic_cast<DataTable *>(mDT);
   if (dt) return new DataTable(*dt, share);
-  else return NULL;
+  else {
+    SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
+    if (swdt) cout << "NOMAdapter_DataTable::CloneDataObj() Object type SwPPFDataTable can not be cloned !" << endl;
+    return NULL;
+  }
 }
 
@@ -647,10 +656,15 @@
 {
   DataTable* dt = dynamic_cast<DataTable *>(mDT);
-  if (dt) { 
-    ObjFileIO<DataTable> fio(dt);
+  SwPPFDataTable* swdt = dynamic_cast<SwPPFDataTable *>(mDT);
+  if (dt) { 	
+    ObjFileIO<BaseDataTable> fio(dt);
     fio.Write(pos, nom);
   }
+  else if (swdt) {
+    ObjFileIO<BaseDataTable> fio(swdt);
+    fio.Write(pos, nom);
+  }		
   else {
-    cerr << " NOMAdapter_DataTable::SavePPF() Objet pas de type DataTable (nom="
+    cerr << " NOMAdapter_DataTable::SavePPF() Objet pas de type DataTable/SwPPFDataTable (nom="
 	 << nom << ")" << endl;
   }
Index: trunk/SophyaPI/PIext/piinit.cc
===================================================================
--- trunk/SophyaPI/PIext/piinit.cc	(revision 2697)
+++ trunk/SophyaPI/PIext/piinit.cc	(revision 2701)
@@ -18,4 +18,5 @@
 
 #include "datatable.h"
+#include "swppfdtable.h"
 
 #include "nomskymapadapter.h"
@@ -52,4 +53,5 @@
 
   serv->RegisterClass(new DataTable, new NOMAdapter_DataTable );
+  serv->RegisterClass(new SwPPFDataTable, new NOMAdapter_DataTable );
   char* varenv=NULL;
   if ( (varenv=getenv("PEIDA_TMP")) == NULL )   varenv=getenv("TMPDIR") ;
Index: trunk/SophyaPI/PIext/pistdimgapp.cc
===================================================================
--- trunk/SophyaPI/PIext/pistdimgapp.cc	(revision 2697)
+++ trunk/SophyaPI/PIext/pistdimgapp.cc	(revision 2701)
@@ -455,15 +455,31 @@
   fg_glsynlock = true;
   int nevtproc = 0;
-  while (XtAppPending(*appctx) != 0) {
-    XtAppNextEvent(*appctx, &evt);
-    XtDispatchEvent(&evt);
-// Soumission de la commande exterieur a executer 
-    if (fg_exc_cmd) {
-      fg_exc_cmd = false; 
-      CmdInterpreter()->AddInputLine(exc_command);
+  while (XtAppPending(*appctx) != 0) {   // Boucle XtAppPending() 
+    try {
+      XtAppNextEvent(*appctx, &evt);
+      XtDispatchEvent(&evt);
+      // Soumission de la commande exterieur a executer 
+      if (fg_exc_cmd) {
+	fg_exc_cmd = false; 
+	CmdInterpreter()->AddInputLine(exc_command);
+      }
+      nevtproc++;
+      if (nevtproc >= 200)  break;
     }
-    nevtproc++;
-    if (nevtproc >= 200)  break;
-  }
+    catch ( PThrowable & exc ) {
+      cerr << "\nPIStdImgApp::Run()/ Exception catched in event loop: \n   " 
+	   << (string)typeid(exc).name() << " Msg= " << exc.Msg() << endl;
+      cerr << "  Trying to continue event loop ... " << endl;
+    }
+    catch ( std::exception & sexc ) {
+      cerr << "\nPIStdImgApp::Run()/ Exception catched in event loop: \n   " 
+	   << (string)typeid(sexc).name() << " what()= " << sexc.what() << endl;
+      cerr << "  Trying to continue event loop ... " << endl;
+    }
+    catch ( ... ) {
+      cerr << "\nPIStdImgApp::Run()/ Unknown Exception (...) catched in event loop ! " << endl;
+      cerr << "  Trying to continue event loop ... " << endl;
+    } 
+  }   // FIN Boucle XtAppPending() 
   fg_glsynlock = false;
   //DBG cout << " "DBG-Run:: Going to wait ... " << klp << endl;
