]> SALOME platform Git repositories - modules/eficas.git/commitdiff
Salome HOME
sauve au 25/04/2016
authorpascale.noyret <pascale.noyret@edf.fr>
Mon, 25 Apr 2016 13:04:00 +0000 (15:04 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Mon, 25 Apr 2016 13:04:00 +0000 (15:04 +0200)
Extensions/localisation.py
InterfaceQT4/monLabelClic.py
InterfaceQT4/monRecherche.py
convert/convert_TELEMAC.py
convert/enumTelemac.py [deleted file]
generator/generator_TELEMAC.py
generator/generator_python.py

index 25e1e2e68e14e1446f7d27f71b1929ed8f6c6e73..36c47f3dce16eaf86e610d60263d7b0ae5c4ccfb 100644 (file)
@@ -20,6 +20,7 @@ and installs them to a ``QApplication``.
 
 """
 
+import os
 from determine import monEnvQT5
 if monEnvQT5 :
    from PyQt5.QtCore import QTranslator
@@ -47,10 +48,12 @@ def localise(application, locale=None ):
        from PyQt5.QtCore import QLibraryInfo
        from PyQt5.QtCore import QLocale
        from PyQt5.QtWidgets import QApplication
+       monPath=os.path.join(os.path.dirname(__file__),'..','UiQT5')
     else :
        from PyQt4.QtCore import QLibraryInfo
        from PyQt4.QtCore import QLocale
        from PyQt4.QtGui import QApplication
+       monPath=os.path.join(os.path.dirname(__file__),'..','UiQT4')
 
     sys_locale = QLocale.system().name()
 
@@ -71,8 +74,8 @@ def localise(application, locale=None ):
     #    print "Unable to load Qt base translator!"
     
     global eficas_translator
-    import os
-    monPath=os.path.join(os.path.dirname(__file__),'..','UiQT4')
+    if locale=="ang" : locale="en"
+    #print "eficas_" + locale, monPath
     if eficas_translator.load("eficas_" + locale, monPath):
         QApplication.installTranslator(eficas_translator)
     else:
index e1dea24df816831f5a7c5d2e79d0561a5787a843..65eb1209ccfd123c7c42a7f131df59e7a90b41cd 100644 (file)
@@ -36,8 +36,10 @@ class MonLabelClic(QLabel) :
         QLabel.__init__(self,parent)
         # Pas propre mais impossible de faire fonctionner isinstance sur Groupe, MonWidgetCommande 
         # PNPNPN ? a ameliorer
-        if isinstance (parent,QFrame):
-           parent=parent.parent()
+        if isinstance (parent,QFrame): parent=parent.parent()
+        while not( hasattr(parent,'traiteClicSurLabel')) :
+             try : parent=parent.parent()
+             except : print "pb avec MonLabelClic"; break
         self.parent=parent
 
 
index a0f6a6646fc3dab480594e83d45a16697a4296f9..0f8433062d97d03a64bb6835052ce5d8bc8ae0c1 100644 (file)
@@ -24,7 +24,7 @@ from desRecherche import Ui_desRecherche
 from determine import monEnvQT5
 if monEnvQT5:
     from PyQt5.QtWidgets import QDialog
-    from PyQt4.QtCore import Qt
+    from PyQt5.QtCore import Qt
 else :
     from PyQt4.QtGui  import *
     from PyQt4.QtCore import *
index cbc9e9c835b6fc8f72c84a6df553aa6efa4f6a1c..af7f42ebf56dc1ea86259e4adae3bca6313e618b 100644 (file)
@@ -27,16 +27,37 @@ from convert_python import PythonParser
 pattern_comment_slash   = re.compile(r"^\s*/")
 pattern_eta   = re.compile(r".*&ETA.*")
 pattern_fin   = re.compile(r".*&FIN.*")
-pattern_blanc = re.compile(r"^ *$")
-pattern_OUI   = re.compile(r"^ *OUI *")
-pattern_oui   = re.compile(r"^ *oui *")
-pattern_NON   = re.compile(r"^ *NON *")
-pattern_non   = re.compile(r"^ *non *")
-pattern_vide  = re.compile(r"^ *$")
+pattern_oui   = re.compile(r"^\s*(oui|OUI|YES|yes|TRUE|VRAI)\s*$")
+pattern_non   = re.compile(r"^\s*(non|NON|NO|no|FALSE|FAUX)\*s$")
+pattern_blanc = re.compile(r"^\s*$")
+pattern_listeVide = re.compile(r"^\s*'\s*'\s*$")
 
-from aideAuxConvertisseurs import DicoEficasToCas, ListeSupprimeCasToEficas
-from aideAuxConvertisseurs import ListeCalculCasToEficas, DicoAvecMajuscules
-from enumDicoTelemac2      import DicoEnumCasEn
+pattern_ligne=re.compile(r'^\s*(?P<ident>[^=:]*)\s*[:=]\s*(?P<reste>.*)$')
+
+# Attention aux listes de flottants
+pattern_liste=re.compile(r'^\s*(?P<valeur>[+-.\w]+(\s*;\s*[+-.\w]+)+)\s*(?P<reste>.*)$')
+pattern_flottant=re.compile(r'^\s*(?P<valeur>[+-]?((\d+(\.\d*)?)|(\.\d+))([dDeE][+-]?\d+)?)\s*(?P<reste>.*)$')
+pattern_texteQuote  = re.compile (r"^\s*(?P<valeur>'[^']+(''[^']+)*')\s*(?P<reste>.*)$")
+pattern_texteSimple = re.compile (r"(?P<valeur>(^|\s)\s*[\w\.-]+)\s*(?P<reste>.*)$")
+pattern_texteVide  = re.compile (r"^\s*(?P<valeur>'')\s*(?P<reste>.*)$")
+
+pattern_ContientDouble=re.compile (r"^.*''.*$")
+
+
+# le pattern texte reconnait 
+#nom1 nom 2 : ou = chaine entre ' 
+# avec eventuellement  des quotes au milieu par exemple
+# TITRE = 'TELEMAC 2D : GOUTTE D''EAU DANS UN BASSIN$'
+# m.group("texte") va rendre 'TELEMAC 2D : GOUTTE D''EAU DANS UN BASSIN$' 
+
+
+#Si le code n est pas Telemac
+try :
+   from aideAuxConvertisseurs import DicoEficasToCas, ListeSupprimeCasToEficas
+   from aideAuxConvertisseurs import ListeCalculCasToEficas, DicoAvecMajuscules
+   from enumDicoTelemac2      import DicoEnumCasEn
+except :
+   pass
 
 from Extensions import localisation
 
@@ -75,54 +96,78 @@ class TELEMACParser(PythonParser):
       l_lignes = string.split(self.text,'\n')
       self.dictSimp={}
       for ligne in l_lignes :
+
           if pattern_comment_slash.match(ligne) : continue
           if pattern_eta.match(ligne) : continue
           if pattern_fin.match(ligne) : continue
           if pattern_blanc.match(ligne) : continue
-          ligne=re.sub('\t',' ',ligne)
-          ligne=re.sub("'",' ',ligne)
-          ligne=re.sub(":",'=',ligne)
-          if ligne.count('=') != 1 :
-              print "pb avec la ligne " , ligne
-              continue 
-
-          motsInLigne=string.split(ligne,' ')
-          listeMotsSimp=()
-          simp=""
-          for mot in motsInLigne:
-              if mot == ""   : continue
-             if mot == "="  :
-                 simp=simp[0:-1]
-                 while simp[-1] == " " : simp=simp[0:-1]
-                 if simp.find('-') > 0 : simp=self.redecoupeSimp(simp)
-                 break
-
-              mot=mot.replace('_','__')
-              simp=simp+mot[0].upper() +mot[1:].lower()+'_'
-          valeur=ligne.split('=')[1]
-          self.dictSimp[simp]=valeur
 
+          finLigne=ligne
+          while finLigne != "" :
+              print finLigne
+              valeur=""
+              m=pattern_ligne.match(finLigne)
+              if m == None : 
+                 print "________________________________________________"
+                 print 'pb avec ****', finLigne , '**** dans ', ligne
+                 print "________________________________________________"
+                 break
       
-      
-      #print dictSimp
-      #print self.dicoInverseFrancais
+              simp=self.traiteIdent(m.group('ident'))
+              finLigne=m.group('reste')
+
+              # attention, l ordre des if est important
+              if pattern_liste.match(finLigne) :
+                 m=pattern_liste.match(finLigne)
+              elif pattern_texteQuote.match(finLigne) :
+                 m=pattern_texteQuote.match(finLigne)
+              elif pattern_flottant.match(finLigne) : 
+                 m=pattern_flottant.match(finLigne)
+              elif pattern_texteVide.match(finLigne):
+                 m=pattern_texteVide.match(finLigne)
+              elif pattern_texteSimple.match(finLigne):
+                 m=pattern_texteSimple.match(finLigne)
+              else :
+                 print "________________________________________________"
+                 print 'pb avec ****', finLigne , '**** dans ', ligne
+                 print "non match"
+                 print "________________________________________________"
+                 break
+              
+              valeur=m.group('valeur')
+              if pattern_blanc.match(valeur) : valeur=None
 
-      dicoParMC={}
-      #print ListeCalculCasToEficas
+              if pattern_flottant.match(finLigne) : 
+                 valeur=re.sub("d","e",valeur)
+                 valeur=re.sub("D","E",valeur)
+
+              if pattern_liste.match(finLigne):
+                 valeur=valeur.split(";")
 
-      if 'Titre' not in self.dictSimp.keys():
+              finLigne=m.group('reste')
+              #print simp 
+              #print valeur
+              #print finLigne
+              self.dictSimp[simp]=valeur
+      
+      if 'Title' not in self.dictSimp.keys() and 'Titre' not in self.dictSimp.keys():
           import os
           self.dictSimp['Titre']=os.path.basename(self.filename)
       
+      dicoParMC={}
       for simp in self.dictSimp.keys():
-          if simp in ListeSupprimeCasToEficas: continue
+          #print simp, " : ", self.dictSimp[simp]
+           
           if simp in TELEMACParser.__dict__.keys() : apply(TELEMACParser.__dict__[simp],(self,))
 
       for simp in self.dictSimp.keys():
+          if simp in ListeSupprimeCasToEficas: continue
           if simp not in self.dicoInverseFrancais.keys() : 
              print "************"
-             print "pb avec ", simp,'------'
+             print "pb avec dans dicoInverseFrancais", simp,'------'
              print "************"
+             print poum
              continue
           listeGenea=self.dicoInverseFrancais[simp]
           listeGeneaReverse=[]
@@ -146,16 +191,48 @@ class TELEMACParser(PythonParser):
       #print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"
       listeMC=self.tri(dicoParMC.keys())
       for k in listeMC :
-          print "----------- traitement de " , k
+          #print "----------- traitement de " , k
           self.textePy += self.dicoFrancaisAnglais[k] + "("
           self.traiteMC(dicoParMC[k])
           self.textePy += ");\n"
-          print "----------- " 
+          #print "----------- " 
            
               
       print self.textePy
       return self.textePy 
 
+   #----------------------------------------
+   def redecoupeSimp(self,simp): 
+   # traite les - dans les identifants python
+   # les remplace par des _
+   #----------------------------------------
+      # replace('-','_')  uniquement dans les identifiants
+      while simp.find('-') > 0 : 
+        ind=simp.find('-')
+        if ind==len(simp)-1 : break
+        simp=simp[0:ind]+'_'+simp[ind+1].upper()+simp[ind+2:]
+
+   #----------------------------------------
+   def traiteIdent(self,listeIdent):
+   # Recree l identifiant Python
+   #----------------------------------------
+          while listeIdent[-1] == " " or listeIdent[-1] == '\t' : listeIdent=listeIdent[0:-1]
+          while listeIdent[0]  == " " or listeIdent[0]  == '\t' : listeIdent=listeIdent[1:]
+          
+          listeIdent=re.sub("'"," ",listeIdent)
+          motsInIdent=string.split(listeIdent,' ')
+          simp=""
+          for mot in motsInIdent:
+              if re.compile(r"^\s*$").match(mot) : continue
+              mot=mot.replace('_','__')
+              simp=simp+mot[0].upper() +mot[1:].lower()+'_'
+
+          simp=simp[0:-1]
+          while simp[-1] == " " : simp=simp[0:-1]
+          if simp.find('-') > 0 : simp=self.redecoupeSimp(simp)
+          return simp
+
+
    def traiteMC(self,dico) :
        for k in dico.keys() :
            valeur= dico[k]
@@ -184,33 +261,74 @@ class TELEMACParser(PythonParser):
 
    def generSIMP(self,obj,nom,valeur):
        if nom in ("Prescribed_Flowrates", "Prescribed_Velocities", "Prescribed_Elevations" ): return
+       #print "___________________________"
+       #print nom
+       #print valeur
+       if valeur == None : print nom
        if obj.max==1 : 
           if 'TXM' in obj.type :
+
+              if pattern_ContientDouble.match(valeur):
+                 valeur=re.sub("''","\'\'",valeur)
+                 print str(valeur)
+                 print valeur
+                 print tr(valeur)
+                 print poum
               valeur=str(valeur)
-              while valeur[-1] == " " : valeur=valeur[0:-1]
-              while valeur[0]  == " " : valeur=valeur[1:]
-              valeur=valeur[0].upper()+valeur[1:].lower()
-              valeur=tr(valeur)
+
+              # ceinture et bretelle si les re sont correctes -)
+              while valeur[-1] == " " or valeur[-1] == '\t' : valeur=valeur[0:-1]
+              while valeur[0]  == " " or valeur[0]  == '\t' : valeur=valeur[1:]
+
+              if pattern_ContientDouble.match(valeur):
+                 valeur=re.sub("''","\'\'",valeur)
+                 print valeur
+                 print tr(valeur)
+                 print poum
+
+
+          # Pour les enum
           try    : valeur=eval(valeur,{})
           except : pass
           if nom in DicoEnumCasEn.keys(): 
+             #print "est dans le dico des enum, valeur simple"
              try    : valeur=DicoEnumCasEn[nom][valeur]
              except : pass
+
+
+          if obj.into != [] and obj.into != None :
+             for possible in obj.into :
+                  if possible.upper() == valeur.upper():
+                     valeur=possible
+                     break
+                  v=valeur[0].upper()+valeur[1:].lower()
+                  v2=tr(v)
+                  if possible.upper() == v2.upper():
+                     valeur=possible
+                     break
+
           if 'Fichier' in obj.type or 'TXM' in obj.type or 'Repertoire' in obj.type :
               valeur=str(valeur)
               while valeur[-1] == " " : valeur=valeur[0:-1]
               while valeur[0]  == " " : valeur=valeur[1:]
               self.textePy += nom + "= '" + str(valeur) +"' ,"
               return
+
           if bool in obj.type :
-            if pattern_OUI.match(valeur) or  pattern_oui.match(valeur) : self.textePy += nom + "= True,"
-            if pattern_NON.match(valeur) or  pattern_non.match(valeur) : self.textePy += nom + "= False,"
+            if   valeur == True  :  self.textePy += nom + "= True,"
+            elif valeur == False :  self.textePy += nom + "= False,"
+            elif pattern_oui.match(valeur) : self.textePy += nom + "= True,"
+            elif pattern_non.match(valeur) : self.textePy += nom + "= False,"
+            else :  self.textePy += nom + "= None,"
             return
           self.textePy += nom + "=" + str(valeur) +","
+
        else :
-          if pattern_vide.match(valeur) : return
-          while valeur[-1] == " " : valeur=valeur[0:-1]
-          while valeur[0]  == " " : valeur=valeur[1:]
+          if pattern_listeVide.match(valeur) :
+             self.textePy += nom + "= None,"
+             return
+          while valeur[-1] == " " or  valeur[-1]=="'" : valeur=valeur[0:-1]
+          while valeur[0]  == " " or  valeur[-0]=="'" : valeur=valeur[1:]
 
           if   ";" in valeur : valeur=valeur.split(';')
           elif "," in valeur : valeur=valeur.split(',')
@@ -218,9 +336,10 @@ class TELEMACParser(PythonParser):
           if valeur == None : return
           newVal=[]
           for v in valeur :
-            try :    v==eval(v,{})
+            try :    v=eval(v,{})
             except : pass
             if nom in DicoEnumCasEn.keys():
+               #print "est dans le dico des enum, valeurs multiples"
                try    : v=DicoEnumCasEn[nom][v]
                except : pass
             newVal.append(v)
@@ -228,7 +347,6 @@ class TELEMACParser(PythonParser):
           
 
 
-
    def tri(self, listeIn):
       if len(listeIn) == 1 : return listeIn
       if self.Ordre_Des_Commandes == None : return listeIn
@@ -250,33 +368,62 @@ class TELEMACParser(PythonParser):
       if self.dictSimp["Processeurs_Paralleles"] == 0 : del  self.dictSimp["Processeurs_Paralleles"]
       else : self.dictSimp["Parallel_Computation"]="Parallel"
  
+   def decoupeListe(self,valeurs,label):
+      print "decoupeSUPG"
+      print valeurs
+      i=0
+      for prefixe in ('_U_And_V','_H'):
+          labelComplet=label+prefixe
+          valeur=valeurs[i]
+          try    : valeur=eval(valeur,{})
+          except : pass
+          if tr(label) in DicoEnumCasEn.keys(): 
+             try    : valeur=DicoEnumCasEn[tr(label)][valeur]
+             except : pass
+          self.dictSimp[labelComplet]=valeur
+          i=i+1
+      if len(valeurs)==2 : return
+      for prefixe in ('_K_And_Epsilon','_Tracers'):
+          labelComplet=label+prefixe
+          valeur=valeurs[i]
+          try    : valeur=eval(valeur,{})
+          except : pass
+          if tr(label) in DicoEnumCasEn.keys(): 
+             try    : valeur=DicoEnumCasEn[tr(label)][valeur]
+             except : pass
+          self.dictSimp[labelComplet]=valeur
+          i=i+1
       
    def Option_De_Supg(self):
-       print "ds Option_De_Supg"
-       return
+       #print "ds Option_De_Supg"
+       self.decoupeListe( self.dictSimp["Option_De_Supg"],"Option_De_Supg")
+       del self.dictSimp["Option_De_Supg"]
 
    def Forme_De_La_Convection(self):
-       print "ds Forme_De_La_Convection"
-       return
-
-   def redecoupeSimp(self,simp): 
-      # replace('-','_')  uniquement dans les identifiants
-      while simp.find('-') > 0 : 
-        ind=simp.find('-')
-        if ind==len(simp)-1 : break
-        simp=simp[0:ind]+'_'+simp[ind+1].upper()+simp[ind+2:]
-      return simp
-
-
+       self.decoupeListe( self.dictSimp["Forme_De_La_Convection"],"Forme_De_La_Convection")
+       valeurs=self.dictSimp["Forme_De_La_Convection"]
+       del self.dictSimp["Forme_De_La_Convection"]
+       self.dictSimp['Convection_De_U_Et_V']=True
+       self.dictSimp['Convection_De_H']=True
+       if len(valeurs)==2 : return
+       self.dictSimp['Advection_Of_K_And_Epsilon']=True
+       self.dictSimp['Advection_Of_Tracers']=True
+
+   def Discretisations_En_Espace(self):
+       self.decoupeListe( self.dictSimp["Discretisations_En_Espace"],"Discretisations_En_Espace")
+       del self.dictSimp["Discretisations_En_Espace"]
+       
 
    def Liquid_Boundaries(self):
+       #print 'Liquid Boundaries'
        texte_Boundaries="Liquid_Boundaries=( "
        premier=0
        if 'Prescribed_Elevations' in self.dictSimp.keys(): 
-           valeurs=self.dictSimp["Prescribed_Elevations"].split(";")
+           valeurs=self.dictSimp["Prescribed_Elevations"]
        elif 'Cotes_Imposees' in self.dictSimp.keys(): 
-           valeurs=self.dictSimp["Cotes_Imposees"].split(";")
+           valeurs=self.dictSimp["Cotes_Imposees"]
        else : valeurs=()
+       #print valeurs
        for e in range(len(valeurs)):
           if valeurs[e] == "" or valeurs[e] == "\n" : continue
           if eval(valeurs[e],{})==0 : continue
@@ -285,10 +432,11 @@ class TELEMACParser(PythonParser):
           texte_Boundaries += "Prescribed_Elevations = " + str(valeurs[e]) + "),\n"
                
        if 'Prescribed_Flowrates' in self.dictSimp.keys(): 
-          valeurs=self.dictSimp["Prescribed_Flowrates"].split(";")
+          valeurs=self.dictSimp["Prescribed_Flowrates"]
        elif 'Debits_Imposes' in self.dictSimp.keys(): 
-          valeurs=self.dictSimp["Debits_Imposes"].split(";")
+          valeurs=self.dictSimp["Debits_Imposes"]
        else : valeurs=()
+       #print valeurs
        for e in range(len(valeurs)):
           if valeurs[e] == "" or valeurs[e] == "\n" : continue
           if eval(valeurs[e],{})==0 : continue
@@ -297,10 +445,11 @@ class TELEMACParser(PythonParser):
           texte_Boundaries += "Prescribed_Flowrates = " + str(valeurs[e]) + "),\n"
                
        if 'Prescribed_Velocity' in self.dictSimp.keys(): 
-           valeurs=self.dictSimp["Prescribed_Velocity"].split(";")
+           valeurs=self.dictSimp["Prescribed_Velocity"]
        elif 'Vitesses_Imposees' in self.dictSimp.keys(): 
-           valeurs=self.dictSimp["Vitesses_Imposees"].split(";")
+           valeurs=self.dictSimp["Vitesses_Imposees"]
        else : valeurs=()
+       #print valeurs
        for e in range(len(valeurs)):
           if valeurs[e] == "" or valeurs[e] == "\n" : continue
           if eval(valeurs[e],{})==0 : continue
diff --git a/convert/enumTelemac.py b/convert/enumTelemac.py
deleted file mode 100644 (file)
index 26a4f52..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-dicoEnum = { 'Type_Of_Advection' : { '1' : "'characteristics'",        '2' : "'SUPG'", '3' : "'Conservative N-scheme'" ,\
-                                     '4' : "'Conservative N-scheme'" , '5' : "'Conservative PSI-scheme'" ,    \
-                                     '6' : "'Non conservative PSI scheme'" , '7' : "'Implicit non conservative N scheme'" ,\
-                                     '13': "' Edge-based N-scheme'", '14': "'Edge-based N-scheme'"},
-             'Solver' :{ '1': "'conjugate gradient'", '2': "'conjugate residual'", '3': "'conjugate gradient on a normal equation'",\
-                         '4': "'minimum error'", '5' :"'conjugate gradient squared (not implemented)'",\
-                         '6': "'cgstab'", '7': "'gmres'" , '8': "'direct'" } ,
-             'Discretisations_In_Space' : {  "11;11":"linear for velocity and depth", \
-                 "12;11" : "quasi-bubble-velocity and linear depth", \
-                 "13;11 ": "quadratic velocity and linear depth" },
-            }
index f63a603412521a501d220da8adc07ad40c9bbcae..5af9468396f4716e23af3f6b618dfa96e3eafd88 100644 (file)
@@ -30,6 +30,7 @@ extensions=('.comm',)
 #DicoAglomere=()
 #DicoEficasToCas=()
 from aideAuxConvertisseurs import listeSupprime, DicoAglomere, DicoEficasToCas
+from enumDicoTelemac2      import DicoEnumCasEnInverse
 
 
 def entryPoint():
@@ -70,6 +71,12 @@ class TELEMACGenerator(PythonGenerator):
    
    def initDico(self) :
  
+      self.PE=False
+      self.FE=False
+      self.VE=False
+      self.textPE = 'PRESCRIBED ELEVATIONS :'
+      self.textFE = 'PRESCRIBED FLOWRATES :'
+      self.textVE = 'PRESCRIBED VELOCITY :'
       self.texteDico = ""
 
 
@@ -88,21 +95,90 @@ class TELEMACGenerator(PythonGenerator):
 #  analyse de chaque noeud de l'arbre 
 #----------------------------------------------------------------------------------------
 
+   def generPROC_ETAPE(self,obj):
+        self.texteDico += '/------------------------------------------------------/\n'
+        self.texteDico += '/\t\t\t'+obj.nom +'\n'
+        self.texteDico += '/------------------------------------------------------/\n'
+        s=PythonGenerator.generPROC_ETAPE(self,obj)
+        if obj.nom in TELEMACGenerator.__dict__.keys() : apply(TELEMACGenerator.__dict__[obj.nom],(self,obj))
+        
+        return s
+
    def generMCSIMP(self,obj) :
         """recuperation de l objet MCSIMP"""
         s=PythonGenerator.generMCSIMP(self,obj)
+        if obj.nom == "Title" :
+            print s
+            print str(obj.valeur)
+            print repr(obj.valeur)
+
+       
+        # Attention pas sur --> ds certains cas non traite par MCFACT ?
+        # a reflechir avec Yoann 
+        if hasattr(obj.definition,'defaut') :
+           if obj.definition.defaut == obj.valeur : return s
+
         nomMajuscule=obj.nom.upper()
         nom=nomMajuscule.replace('_',' ') 
-        if nom in listeSupprime : return s
+        if nom in listeSupprime or s == "" : return s
+
+        sTelemac=s[0:-1]
+        if not( type(obj.valeur) in (types.TupleType,types.ListType) ):
+           if obj.nom in DicoEnumCasEnInverse.keys():  
+             try : sTelemac=DicoEnumCasEnInverse[obj.nom][obj.valeur]
+             except : print "generMCSIMP Pb avec ", obj.nom, obj.valeur
+        if type(obj.valeur) in (types.TupleType,types.ListType) :
+           if obj.nom in DicoEnumCasEnInverse.keys():  
+             sT = "'"
+             for v in obj.valeur:
+               try : sT +=DicoEnumCasEnInverse[obj.nom][v] +";"
+               except : print "generMCSIMP Pb avec ", obj.nom, v
+             sTelemac=sT[0:-1]+"'"
+
         if nom in DicoEficasToCas.keys() : nom=DicoEficasToCas[nom]
-        self.texteDico+=nom+ ":" + s[0:-1]+ "\n"
+        self.texteDico+=nom+ ":" + str(sTelemac) + "\n"
         return s
 
    def generMCFACT(self,obj):
       """
-        Recalule les jours et les heures
       """
       s=PythonGenerator.generMCFACT(self,obj)
+      if obj.nom in TELEMACGenerator.__dict__.keys() : apply(TELEMACGenerator.__dict__[obj.nom],(self,obj))
       return s
 
   
+   def Liquid_Boundaries(self,obj):
+      #print obj.nom , dir(obj)
+      if 'Type_Condition' in  obj.liste_mc_presents() :
+          objForme=obj.get_child('Type_Condition')
+          valForme=objForme.valeur
+
+          nomBloc='b_'+valForme.split(" ")[1] 
+          if nomBloc in  obj.liste_mc_presents() :
+             objBloc=obj.get_child(nomBloc)
+             objValeur=objBloc.get_child(objBloc.liste_mc_presents()[0])
+             valeur=objValeur.valeur
+             if valeur== None : valeur="0."
+          if valForme == 'Prescribed Elevations' :
+              self.PE=True
+              self.textPE += str(valeur) +"; "
+          else : self.textPE += "0.; "
+          if valForme == 'Prescribed Flowrates' :
+              self.FE=True
+              self.textFE += str(valeur) +"; "
+          else : self.textFE += "0.; "
+          if valForme == 'Prescribed Velocity'  :
+              self.VE=True
+              self.textVE += str(valeur) +"; "
+          else : self.textVE += "0.; "
+      print self.textPE, self.textFE,self.textVE
+
+   def BOUNDARY_CONDITIONS(self,obj):
+       if self.FE :  self.texteDico += self.textFE[0:-1]+'\n' 
+       if self.VE :  self.texteDico += self.textVE[0:-1]+'\n' 
+       if self.PE :  self.texteDico += self.textPE[0:-1]+'\n' 
+
+   def Validation(self,obj):
+       self.textDico += "Validation = OUI \n"
+  
index 29cf196b803e42bad3bc11c592ce45cb47b0be0d..5f18ef860ad2be4dd62607f933faf4002f3c3075 100644 (file)
@@ -421,7 +421,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 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