Salome HOME
mise a jour de la liste des .ui
[tools/eficas.git] / convert / convert_pyth.py
index b770c3782567193fd1ad6563abc0a2cde0a7665f..3f191ed03972ecf0812c50f153c73d5ea6287003 100644 (file)
@@ -1,85 +1,93 @@
 # -*- coding: utf-8 -*-
 # -*- coding: utf-8 -*-
-#            CONFIGURATION MANAGEMENT OF EDF VERSION
-# ======================================================================
-# COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
-# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
-# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
-# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
-# (AT YOUR OPTION) ANY LATER VERSION.
+# Copyright (C) 2007-2013   EDF R&D
 #
 #
-# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
-# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
-# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
-# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License.
 #
 #
-# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
-# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
-#    1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
 #
 #
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 #
 #
-# ======================================================================
 """
     Ce module contient le plugin convertisseur de fichier
     au format python pour EFICAS.
 
     Un plugin convertisseur doit fournir deux attributs de classe :
 """
     Ce module contient le plugin convertisseur de fichier
     au format python pour EFICAS.
 
     Un plugin convertisseur doit fournir deux attributs de classe :
-    extensions et formats et deux méthodes : readfile,convert.
+    extensions et formats et deux methodes : readfile,convert.
 
     L'attribut de classe extensions est une liste d'extensions
 
     L'attribut de classe extensions est une liste d'extensions
-    de fichiers préconisées pour ce type de format. Cette information
+    de fichiers preconisees pour ce type de format. Cette information
     est seulement indicative.
 
     L'attribut de classe formats est une liste de formats de sortie
     est seulement indicative.
 
     L'attribut de classe formats est une liste de formats de sortie
-    supportés par le convertisseur. Les formats possibles sont :
+    supportes par le convertisseur. Les formats possibles sont :
     eval, dict ou exec.
     eval, dict ou exec.
-    Le format eval est un texte source Python qui peut etre evalué. Le
-    résultat de l'évaluation est un objet Python quelconque.
+    Le format eval est un texte source Python qui peut etre evalue. Le
+    resultat de l'evaluation est un objet Python quelconque.
     Le format dict est un dictionnaire Python.
     Le format dict est un dictionnaire Python.
-    Le format exec est un texte source Python qui peut etre executé
+    Le format exec est un texte source Python qui peut etre execute
 
 
-    La méthode readfile a pour fonction de lire un fichier dont le
-    nom est passé en argument de la fonction.
+    La methode readfile a pour fonction de lire un fichier dont le
+    nom est passe en argument de la fonction.
        - convertisseur.readfile(nom_fichier)
 
        - convertisseur.readfile(nom_fichier)
 
-    La méthode convert a pour fonction de convertir le fichier
-    préalablement lu dans un objet du format passé en argument.
+    La methode convert a pour fonction de convertir le fichier
+    prealablement lu dans un objet du format passe en argument.
        - objet=convertisseur.convert(outformat)
 
     Ce convertisseur supporte le format de sortie dict
 
 """
        - objet=convertisseur.convert(outformat)
 
     Ce convertisseur supporte le format de sortie dict
 
 """
-import sys,string,traceback
+from __future__ import absolute_import
+try :
+   from builtins import str
+   from builtins import object
+except :
+   pass
+
+import sys,traceback
 
 from Noyau import N_CR
 
 from Noyau import N_CR
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
 
 def entryPoint():
    """
 
 def entryPoint():
    """
-       Retourne les informations nécessaires pour le chargeur de plugins
-       Ces informations sont retournées dans un dictionnaire
+       Retourne les informations necessaires pour le chargeur de plugins
+       Ces informations sont retournees dans un dictionnaire
    """
    return {
         # Le nom du plugin
           'name' : 'pyth',
    """
    return {
         # Le nom du plugin
           'name' : 'pyth',
-        # La factory pour créer une instance du plugin
+        # La factory pour creer une instance du plugin
           'factory' : PythParser,
           }
 
 
           'factory' : PythParser,
           }
 
 
-class PythParser:
+class PythParser(object):
    """
        Ce convertisseur lit un fichier au format pyth avec la 
        methode readfile : convertisseur.readfile(nom_fichier)
        et retourne le texte au format outformat avec la 
        methode convertisseur.convert(outformat)
 
    """
        Ce convertisseur lit un fichier au format pyth avec la 
        methode readfile : convertisseur.readfile(nom_fichier)
        et retourne le texte au format outformat avec la 
        methode convertisseur.convert(outformat)
 
-       Ses caractéristiques principales sont exposées dans 2 attributs 
+       Ses caracteristiques principales sont exposees dans 2 attributs 
        de classe :
        de classe :
-         - extensions : qui donne une liste d'extensions de fichier préconisées
-         - formats : qui donne une liste de formats de sortie supportés
+         - extensions : qui donne une liste d'extensions de fichier preconisees
+         - formats : qui donne une liste de formats de sortie supportes
    """
    """
-   # Les extensions de fichier préconisées
+   # Les extensions de fichier preconisees
    extensions=('.pyth',)
    extensions=('.pyth',)
-   # Les formats de sortie supportés (eval dict ou exec)
+   # Les formats de sortie supportes (eval dict ou exec)
    formats=('dict',)
 
    def __init__(self,cr=None):
    formats=('dict',)
 
    def __init__(self,cr=None):
@@ -96,26 +104,25 @@ class PythParser:
       try:
          self.text=open(filename).read()
       except:
       try:
          self.text=open(filename).read()
       except:
-         self.cr.fatal("Impossible ouvrir fichier %s",filename)
+         self.cr.fatal(tr("Impossible d'ouvrir le fichier : %s",str( filename)))
          return
       self.g={}
       try:
          return
       self.g={}
       try:
-         exec self.text in self.g
-      except Exception,e:
+         exec(self.text, self.g)
+      except EficasException as e:
          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
          l=traceback.format_exception(sys.exc_info()[0],sys.exc_info()[1],sys.exc_info()[2])
-         s= string.join(l[2:])
-         s= string.replace(s,'"<string>"','"<%s>"'%self.filename)
-         self.cr.fatal("Erreur a l'evaluation :\n" + s)
+         s= ''.join(l[2:])
+         s= s.replace('"<string>"','"<%s>"'%self.filename)
+         self.cr.fatal(tr("Erreur a l'evaluation :\n %s", s))
 
 
-   def convert(self,outformat):
+   def convert(self,outformat,appli=None):
       if outformat == 'dict':
          return self.getdict()
       else:
       if outformat == 'dict':
          return self.getdict()
       else:
-         raise "Format de sortie : %s, non supporté"
+         raise EficasException(tr("Format de sortie : %s, non supporte", outformat))
 
    def getdict(self):
       d={}
 
    def getdict(self):
       d={}
-      for k,v in self.g.items():
+      for k,v in list(self.g.items()):
          if k[0] != '_':d[k]=v
       return d
          if k[0] != '_':d[k]=v
       return d
-