Salome HOME
menage
[tools/eficas.git] / generator / generator_python.py
index 8ec2dbc0b0d448878b5ea8fa9f4f44a94a2e1fbc..e49ca579150ef653b26290e4a5b5a4ab6148c921 100644 (file)
@@ -30,8 +30,12 @@ from Noyau.N_utils import repr_float
 import Accas
 import Extensions
 from Extensions.parametre import ITEM_PARAMETRE
-from Formatage import Formatage
+from Formatage import Formatage 
+from Formatage import FormatageLigne
 from Extensions.param2 import Formula
+from Extensions.eficas_exception import EficasException
+from Extensions.i18n import tr
+
 
 def entryPoint():
    """
@@ -82,7 +86,7 @@ class PythonGenerator:
       fp.write(self.text)
       fp.close()
 
-   def gener(self,obj,format='brut',config=None):
+   def gener(self,obj,format='brut',config=None,appli=None):
       """
           Retourne une representation du JDC obj sous une
           forme qui est parametree par format.
@@ -100,8 +104,11 @@ class PythonGenerator:
       elif format == 'beautifie':
          jdc_formate = Formatage(liste,mode='.py')
          self.text=jdc_formate.formate_jdc()
+      elif format == 'Ligne':
+         jdc_formate = FormatageLigne(liste,mode='.py')
+         self.text=jdc_formate.formate_jdc()
       else:
-         raise "Format pas implemente : "+format
+         raise EficasException(tr("Format non implemente ") +format)
       return self.text
 
    def generator(self,obj):
@@ -152,7 +159,7 @@ class PythonGenerator:
       elif isinstance(obj,Formula):
          return self.generFormula(obj)
       else:
-         raise "Type d'objet non prevu",obj
+         raise EficasException(tr("Type d'objet non prevu") +obj)
 
    def generJDC(self,obj):
       """
@@ -413,8 +420,7 @@ class PythonGenerator:
          else:
            # on est en presence d'un MCSIMP : on recupere une string
            text =self.generator(v)
-           l.append(v.nom+'='+text)
-           if obj.nom=="Observers": print l
+           if v.nom != "Consigne" :  l.append(v.nom+'='+text)
       # il faut etre plus subtil dans l'ajout de la virgule en differenciant 
       # le cas ou elle est obligatoire (si self a des freres cadets 
       # dans self.parent) ou non
@@ -429,8 +435,7 @@ class PythonGenerator:
       """
       if len(obj.data) > 1:
          l=['(']
-         for mcfact in obj.data: 
-             l.append(self.generator(mcfact))
+         for mcfact in obj.data: l.append(self.generator(mcfact))
          l.append('),')
       else:
          l= self.generator(obj.data[0])
@@ -472,12 +477,13 @@ class PythonGenerator:
       return l
 
 
-   def format_item(self,valeur,etape,obj):
+   def format_item(self,valeur,etape,obj,vientDeListe=0):
       if (type(valeur) == types.FloatType or 'R' in obj.definition.type) and not(isinstance(valeur,Accas.PARAMETRE)) :
-         # Pour un flottant on utilise str
+         # Pour un flottant on utilise str ou repr si on vient d une liste
          # ou la notation scientifique
          # On ajoute un . si il n y en a pas dans la valeur
          s = str(valeur)
+         if vientDeListe and repr(valeur) != str(valeur) : s=repr(valeur)
          if (s.find('.')== -1 and s.find('e')== -1 and s.find('E')==-1) : s=s+'.0'
          clefobj=etape.get_sdname()
          if self.appli.appliEficas and self.appli.appliEficas.dict_reels.has_key(clefobj):
@@ -510,7 +516,6 @@ class PythonGenerator:
             # mais seulement le nom dans le cas d'un parametre
       #      s = valeur.nom
       #   else:
-      #      print valeur
       #      s = self.generator(valeur)
 
       else :
@@ -532,16 +537,21 @@ class PythonGenerator:
              break
 
          if waitTuple :
-            s = str(obj.valeur) +','
-            obj.valeurFormatee=obj.valeur
+            #s = str(obj.valeur) +','
+            #obj.valeurFormatee=obj.valeur
+            s = obj.GetText() +','
+            obj.valeurFormatee=obj.GetText()
          else :
             obj.valeurFormatee=[]
             for val in obj.valeur :
-               s =s +self.format_item(val,obj.etape,obj) + ','
-               obj.valeurFormatee.append(self.format_item(val,obj.etape,obj))
-            if len(obj.valeur) > 1:
+               s =s +self.format_item(val,obj.etape,obj,1) + ','
+               if obj.wait_TXM() :
+                  obj.valeurFormatee.append(val)
+               else :
+                 obj.valeurFormatee.append(self.format_item(val,obj.etape,obj))
+            if len(obj.valeur) >= 1:
                s = '(' + s + '),'
-            if obj.valeur==[] : s="(),"
+            if obj.valeur==[] or obj.valeur==() : s="(),"
          if obj.nbrColonnes() :
             s=self.formatColonnes(obj.nbrColonnes(),obj.valeur,obj)
       else :
@@ -552,7 +562,6 @@ class PythonGenerator:
 
    def formatColonnes(self,nbrColonnes,listeValeurs,obj):
       #try :
-      print listeValeurs
       if 1 == 1 :
         indice=0
         textformat="("
@@ -575,5 +584,4 @@ class PythonGenerator:
       #except :
       else :
          textformat=str(obj.valeur)
-      print textformat
       return textformat