Salome HOME
pourTelemac
authorpascale.noyret <pascale.noyret@edf.fr>
Fri, 9 Jun 2017 08:54:31 +0000 (10:54 +0200)
committerpascale.noyret <pascale.noyret@edf.fr>
Fri, 9 Jun 2017 08:54:31 +0000 (10:54 +0200)
Editeur/Eficas_utils.py [new file with mode: 0644]
Editeur/utils.py [deleted file]
InterfaceQT4/configuration.py
InterfaceQT4/editor.py
InterfaceQT4/qtEficas.py
InterfaceQT4/viewManager.py
convert/convert_TELEMAC.py
generator/generator_TELEMAC.py

diff --git a/Editeur/Eficas_utils.py b/Editeur/Eficas_utils.py
new file mode 100644 (file)
index 0000000..dd5ac0c
--- /dev/null
@@ -0,0 +1,141 @@
+# -*- coding: utf-8 -*-
+# Copyright (C) 2007-2013   EDF R&D
+#
+# 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.
+#
+# 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 des utilitaires divers
+"""
+import os,re
+import glob
+import traceback
+import codecs,types
+
+from Extensions.i18n import tr
+
+def substract_list(liste1,liste2):
+  """ 
+      Enleve tous les elements de liste2 presents dans liste1 et retourne liste1
+  """
+  for item in liste2:
+    try:
+      liste1.remove(item)
+    except:
+      pass
+  return liste1
+
+def get_rep_user(dir):
+  """
+      Determine sur quelle plate-forme s'execute Eficas et recherche
+      le repertoire de l'utilisateur /$home/Eficas_install
+  """
+
+  rep_user_eficas= os.path.join(os.environ['HOME'],dir)
+  if os.path.exists(rep_user_eficas):
+    if os.path.isfile(rep_user_eficas) :
+      print (tr("Un fichier de nom %s existe deja : impossible de creer un repertoire de meme nom", rep_user_eficas))
+      rep_user_eficas=None
+  else :
+    try:
+      os.mkdir(rep_user_eficas)
+    except:
+      print (tr("Creation du repertoire %s impossible\n Verifiez vos droits d'acces", rep_user_eficas))
+  return rep_user_eficas
+
+def read_file(file):
+  """
+      ouvre le fichier file et retourne son contenu
+      si pbe retourne None
+  """
+  try :
+    f=open(file)
+    text=f.read()
+    f.close()
+    return text
+  except:
+    return None
+
+def save_in_file(file,text,dir=None):
+  """
+      cree le fichier file (ou l'ecrase s'il existe) et ecrit text dedans
+      retourne 1 si OK 0 sinon
+  """
+  try :
+      if dir != None:
+         os.chdir(dir)
+      f=open(file,'w')
+      f.write(text)
+      f.close()
+      return 1
+  except:
+      return 0
+
+def extension_fichier(pathAndFile):
+    """ Return ext if path/filename.ext is given """
+    return os.path.splitext(pathAndFile)[1][1:]
+
+def stripPath(pathAndFile):
+    """ Return filename.ext if path/filename.ext is given """
+    return os.path.split(pathAndFile)[1]
+
+def init_rep_cata_dev(fic_cata,rep_goal):
+  """ 
+      Initialise le repertoire des catalogues developpeurs (chemin d'acces donne
+      dans le fichier eficas.ini cad :
+        - le cree s'il n'existe pas encore
+        - copie dedans les 3 fichiers necessaires :
+          * __init__.py (pour que ce repertoire puisse etre interprete comme un package)
+          * entete.py (pour realiser les import necessaires a l'interpretation des catalogues)
+          * declaration_concepts.py (idem)
+        - cree le fichier cata_developpeur.py qui sera par la suite importe
+  """
+  try :
+    if not os.path.isdir(rep_goal) :
+      os.mkdir(rep_goal)
+    #texte_entete = get_entete_cata(fic_cata)
+    texte_entete=""
+    # rep_goal doit contenir les catalogues du developpeur sous la forme *.capy
+    # il faut creer le catalogue developpeur par concatenation de entete,declaration_concepts
+    # et de tous ces fichiers
+    cur_dir = os.getcwd()
+    os.chdir(rep_goal)
+    l_cata_dev = glob.glob('*.capy')
+    if os.path.isfile('cata_developpeur.py') : os.remove('cata_developpeur.py')
+    if len(l_cata_dev) :
+      # des catalogues developpeurs sont effectivement presents : on cree cata_dev.py dans rep_goal
+      str = ''
+      str = str + texte_entete+'\n'
+      for file in l_cata_dev :
+        str = str + open(file,'r').read() +'\n'
+      open('cata_developpeur.py','w+').write(str)
+    os.chdir(cur_dir)
+  except:
+    traceback.print_exc()
+    print ( tr("Impossible de transferer les fichiers requis dans : %s", str(rep_goal)))
+
+def get_entete_cata(fic_cata):
+  """ Retrouve l'entete du catalogue """
+  l_lignes = open(fic_cata,'r').readlines()
+  txt = ''
+  flag = 0
+  for ligne in l_lignes :
+    if re.match(u"# debut entete",ligne) : flag = 1
+    if re.match(u"# fin entete",ligne) : break
+    if not flag : continue
+    txt = txt + ligne
+  return txt
+
diff --git a/Editeur/utils.py b/Editeur/utils.py
deleted file mode 100644 (file)
index dd5ac0c..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (C) 2007-2013   EDF R&D
-#
-# 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.
-#
-# 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 des utilitaires divers
-"""
-import os,re
-import glob
-import traceback
-import codecs,types
-
-from Extensions.i18n import tr
-
-def substract_list(liste1,liste2):
-  """ 
-      Enleve tous les elements de liste2 presents dans liste1 et retourne liste1
-  """
-  for item in liste2:
-    try:
-      liste1.remove(item)
-    except:
-      pass
-  return liste1
-
-def get_rep_user(dir):
-  """
-      Determine sur quelle plate-forme s'execute Eficas et recherche
-      le repertoire de l'utilisateur /$home/Eficas_install
-  """
-
-  rep_user_eficas= os.path.join(os.environ['HOME'],dir)
-  if os.path.exists(rep_user_eficas):
-    if os.path.isfile(rep_user_eficas) :
-      print (tr("Un fichier de nom %s existe deja : impossible de creer un repertoire de meme nom", rep_user_eficas))
-      rep_user_eficas=None
-  else :
-    try:
-      os.mkdir(rep_user_eficas)
-    except:
-      print (tr("Creation du repertoire %s impossible\n Verifiez vos droits d'acces", rep_user_eficas))
-  return rep_user_eficas
-
-def read_file(file):
-  """
-      ouvre le fichier file et retourne son contenu
-      si pbe retourne None
-  """
-  try :
-    f=open(file)
-    text=f.read()
-    f.close()
-    return text
-  except:
-    return None
-
-def save_in_file(file,text,dir=None):
-  """
-      cree le fichier file (ou l'ecrase s'il existe) et ecrit text dedans
-      retourne 1 si OK 0 sinon
-  """
-  try :
-      if dir != None:
-         os.chdir(dir)
-      f=open(file,'w')
-      f.write(text)
-      f.close()
-      return 1
-  except:
-      return 0
-
-def extension_fichier(pathAndFile):
-    """ Return ext if path/filename.ext is given """
-    return os.path.splitext(pathAndFile)[1][1:]
-
-def stripPath(pathAndFile):
-    """ Return filename.ext if path/filename.ext is given """
-    return os.path.split(pathAndFile)[1]
-
-def init_rep_cata_dev(fic_cata,rep_goal):
-  """ 
-      Initialise le repertoire des catalogues developpeurs (chemin d'acces donne
-      dans le fichier eficas.ini cad :
-        - le cree s'il n'existe pas encore
-        - copie dedans les 3 fichiers necessaires :
-          * __init__.py (pour que ce repertoire puisse etre interprete comme un package)
-          * entete.py (pour realiser les import necessaires a l'interpretation des catalogues)
-          * declaration_concepts.py (idem)
-        - cree le fichier cata_developpeur.py qui sera par la suite importe
-  """
-  try :
-    if not os.path.isdir(rep_goal) :
-      os.mkdir(rep_goal)
-    #texte_entete = get_entete_cata(fic_cata)
-    texte_entete=""
-    # rep_goal doit contenir les catalogues du developpeur sous la forme *.capy
-    # il faut creer le catalogue developpeur par concatenation de entete,declaration_concepts
-    # et de tous ces fichiers
-    cur_dir = os.getcwd()
-    os.chdir(rep_goal)
-    l_cata_dev = glob.glob('*.capy')
-    if os.path.isfile('cata_developpeur.py') : os.remove('cata_developpeur.py')
-    if len(l_cata_dev) :
-      # des catalogues developpeurs sont effectivement presents : on cree cata_dev.py dans rep_goal
-      str = ''
-      str = str + texte_entete+'\n'
-      for file in l_cata_dev :
-        str = str + open(file,'r').read() +'\n'
-      open('cata_developpeur.py','w+').write(str)
-    os.chdir(cur_dir)
-  except:
-    traceback.print_exc()
-    print ( tr("Impossible de transferer les fichiers requis dans : %s", str(rep_goal)))
-
-def get_entete_cata(fic_cata):
-  """ Retrouve l'entete du catalogue """
-  l_lignes = open(fic_cata,'r').readlines()
-  txt = ''
-  flag = 0
-  for ligne in l_lignes :
-    if re.match(u"# debut entete",ligne) : flag = 1
-    if re.match(u"# fin entete",ligne) : break
-    if not flag : continue
-    txt = txt + ligne
-  return txt
-
index 8b7bb7d5ae9dec3a4fe1b5c169b8926628192320..ebdbdf947e6e887632486a45eb684932b578eba9 100644 (file)
@@ -31,9 +31,10 @@ except : pass
 import os, sys,  types, re
 import traceback
 from PyQt5.QtWidgets import QMessageBox
-from  Editeur.utils import read_file
+from  Editeur.Eficas_utils import read_file
 from Extensions.i18n import tr
 
+
 class CONFIG_BASE(object):
 
   #-------------------------------
index 5ca8a37585cc346b2da6ffc975f9f956cbc8aee9..134549a56c43cab95f75c92946cfa7c0e093d5ef 100755 (executable)
@@ -52,7 +52,7 @@ from monWidgetCreeParam import MonWidgetCreeParam
 from . import browser
 from . import readercata
 
-DictExtensions= {"MAP" : ".map", "TELEMAC" : '.comm'}
+DictExtensions= {"MAP" : ".map", "TELEMAC" : '.cas'}
 
     
 
@@ -194,6 +194,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
             if jdc==None :
                try :
                    self.jdc = self.readFile(self.fichier)
+                   if self.salome : self.appliEficas.addJdcInSalome( self.fichier)
                except :
                    print ("mauvaise lecture")
             else :
@@ -1076,7 +1077,7 @@ class JDCEditor(Ui_baseWidget,QWidget):
     def determineNomFichier(self,path,extension):
     #-----------------------------------------------------#
       if self.appli.code in DictExtensions:
-         chaine1="JDC (*"+DictExtensions[self.appli.code]+");;"
+         chaine1=DictExtensions[self.appli.code]+" (*."+DictExtensions[self.appli.code]+");;"
          extensions= tr(chaine1+ "All Files (*)")
       else :
          extensions= tr("JDC (*.comm);;" "All Files (*)")
index 21b86ef9ee7eae3498c3977bb602a6432a87528c..3d6263b6a22224a3f3768ec3edb8d482f213b407 100755 (executable)
@@ -48,7 +48,7 @@ class Appli(Ui_Eficas,QMainWindow):
     """
     Class implementing the main user interface.
     """
-    def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='ang',ssIhm=False):
+    def __init__(self,code=None,salome=1,parent=None,ssCode=None,multi=False,langue='fr',ssIhm=False):
         """
         Constructor
         """
@@ -77,8 +77,6 @@ class Appli(Ui_Eficas,QMainWindow):
         self.listeCode=['Adao','ADAO','Carmel3D','Telemac','CF','MAP','ZCracks', 'SEP','SPECA','PSEN_Eficas','PSEN_N1']
         self.repIcon=os.path.join( os.path.dirname(os.path.abspath(__file__)),'..','Editeur','icons')
 
-        if langue=='fr': self.langue=langue
-        else           : self.langue="ang"
 
         if self.salome:
           import Accas
@@ -91,6 +89,8 @@ class Appli(Ui_Eficas,QMainWindow):
         self.multi=multi
         self.demande=multi # specifique PSEN
 
+        if langue=='fr': self.langue=langue
+        else           : self.langue="ang"
 
         if self.multi == False :
              self.definitCode(code,ssCode)
@@ -98,7 +98,6 @@ class Appli(Ui_Eficas,QMainWindow):
 
 
 
-        if not self.salome and hasattr (self, 'CONFIGURATION') and hasattr(self.CONFIGURATION,'lang') : langue=self.CONFIGURATION.lang
 
 
         self.suiteTelemac=False
@@ -110,12 +109,11 @@ class Appli(Ui_Eficas,QMainWindow):
            self.suiteTelemac=self.CONFIGURATION.suiteTelemac
 
 
+        if not self.salome and hasattr (self, 'CONFIGURATION') and hasattr(self.CONFIGURATION,'lang') : self.langue=self.CONFIGURATION.lang
         from Extensions import localisation
         app=QApplication
         if hasattr (self, 'CONFIGURATION') : localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
 
-
-
         self.setupUi(self)
         #if parent != None : self.parentCentralWidget = parent.centralWidget()
         #else              : self.parentCentralWidget = None
@@ -194,9 +192,10 @@ class Appli(Ui_Eficas,QMainWindow):
         self.CONFIGStyle = None
         if hasattr(configuration,'make_config_style'):
            self.CONFIGStyle = configuration.make_config_style(self,prefsCode.repIni)
-        from Extensions import localisation
-        app=QApplication
-        if hasattr (self, 'CONFIGURATION') : localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
+        # 
+        #from Extensions import localisation
+        #app=QApplication
+        #if hasattr (self, 'CONFIGURATION') : localisation.localise(None,self.langue,translatorFichier=self.CONFIGURATION.translatorFichier)
         #PN --> pb d exception qui font planter salome
         # plus supporte en python 3
         #if hasattr(prefsCode,'encoding'):
index e75c8a9bb875e31bb68d88dd686f2da51785cd16..85459d8c0745d29549555882656e462539ff1eaf 100644 (file)
@@ -67,6 +67,7 @@ class MyTabview(object):
             if self.appliEficas.code in DictExtensions:
                chaine="JDC (*"+DictExtensions[self.appliEficas.code]+");;"
                extensions=tr(chaine+ "All Files (*)")
+            elif self.appliEficas.code== "TELEMAC" : extensions=tr('CAS (*.cas);;All Files (*)')
             else :
                extensions=tr('Fichiers JDC (*.comm);;''Tous les Fichiers (*)')
 
index ac52418436009e0d00b47839bb2a419f820a850d..b5330f4b912f5eda275d278596a96c6a6a818371 100644 (file)
@@ -102,7 +102,7 @@ class TELEMACParser(PythonParser):
       self.Ordre_Des_Commandes=appli.readercata.Ordre_Des_Commandes
 
       if appli.langue=='fr' :
-          from enum_Telemac2d_into       import DicoEnumCasFrToEnumCasEn
+          from enum_Telemac2d_auto       import DicoEnumCasFrToEnumCasEn
           for k in DicoEnumCasFrToEnumCasEn :
               TelemacdicoEn[k]=DicoEnumCasFrToEnumCasEn[k]
 
@@ -333,7 +333,7 @@ class TELEMACParser(PythonParser):
        print (nom)
 
    def convertSIMP(self,obj,nom,valeur):
-       #print 'in convertSIMP', nom,valeur
+       #print ('in convertSIMP', nom,valeur)
        #if nom in ("PRESCRIBED_FLOWRATES", "PRESCRIBED_VELOCITIES", "PRESCRIBED_ELEVATIONS" ): return
        if obj.max==1 :
           if hasattr(obj.type[0],'ntuple') :
index 2ad9f845480814865989bbe99b739c4de0466d36..b5758f5d70b7133f15bba50a07e0a31b63000e5d 100644 (file)
@@ -32,19 +32,6 @@ from Extensions.i18n import tr
 from .generator_python import PythonGenerator
 
 extensions=('.comm',)
-#if 1:
-try :
-   from enum_Telemac2d_auto       import TelemacdicoEn
-   DicoEnumCasEnInverse={}
-   for motClef in TelemacdicoEn:
-     d={}
-     for valTelemac in TelemacdicoEn[motClef]:
-        valEficas= TelemacdicoEn[motClef][valTelemac]
-        d[valEficas]=valTelemac
-     DicoEnumCasEnInverse[motClef]=d
-
-except :
-   pass
 
 
 
@@ -75,6 +62,27 @@ class TELEMACGenerator(PythonGenerator):
 
       self.statut=statut
       self.langue=appli.langue
+      if self.langue == 'fr' : 
+         from  enum_Telemac2d_auto import DicoEnumCasFrToEnumCasEn
+         self.DicoEnumCasEnInverse={}
+         for motClef in DicoEnumCasFrToEnumCasEn:
+              d={}
+              for valTelemac in DicoEnumCasFrToEnumCasEn[motClef]:
+                 valEficas= DicoEnumCasFrToEnumCasEn[motClef][valTelemac]
+                 d[valEficas]=valTelemac
+              self.DicoEnumCasEnInverse[motClef]=d
+      else :
+         try :
+            from enum_Telemac2d_auto       import TelemacdicoEn
+            self.DicoEnumCasEnInverse={}
+            for motClef in TelemacdicoEn:
+              d={}
+              for valTelemac in TelemacdicoEn[motClef]:
+                 valEficas= TelemacdicoEn[motClef][valTelemac]
+                 d[valEficas]=valTelemac
+              self.DicoEnumCasEnInverse[motClef]=d
+         except :
+            pass
       self.initDico()
       # Pour Simplifier les verifs d ecriture
       if hasattr(appli,'listeTelemac') : self.listeTelemac=appli.listeTelemac
@@ -175,17 +183,17 @@ class TELEMACGenerator(PythonGenerator):
 
         sTelemac=s[0:-1]
         if not( type(obj.valeur) in (tuple,list) ):
-           if obj.nom in DicoEnumCasEnInverse:
-             try : sTelemac=str(DicoEnumCasEnInverse[obj.nom][obj.valeur])
+           if obj.nom in self.DicoEnumCasEnInverse:
+             try : sTelemac=str(self.DicoEnumCasEnInverse[obj.nom][obj.valeur])
              except :
                if obj.valeur==None :  sTelemac=obj.valeur
                else : print(("generMCSIMP Pb valeur avec ", obj.nom, obj.valeur))
         if type(obj.valeur) in (tuple,list) :
-           if obj.nom in DicoEnumCasEnInverse:
+           if obj.nom in self.DicoEnumCasEnInverse:
              #sT = "'"
              sT=''
              for v in obj.valeur:
-               try : sT +=str(DicoEnumCasEnInverse[obj.nom][v]) +";"
+               try : sT +=str(self.DicoEnumCasEnInverse[obj.nom][v]) +";"
                except :
                  if obj.definition.intoSug != [] : sT +=str(v) + ";"
                  else : print(("generMCSIMP Pb Tuple avec ", obj.nom, v, obj.valeur))
@@ -328,11 +336,11 @@ class TELEMACGenerator(PythonGenerator):
            if c.nom[0:18] == 'Type_Of_Advection_' and c.valeur!=None:
               suf=c.nom[18:]
               index=dicoSuf[suf]
-              listeAdvection[index]=DicoEnumCasEnInverse['Type_Of_Advection'][c.valeur]
+              listeAdvection[index]=self.DicoEnumCasEnInverse['Type_Of_Advection'][c.valeur]
            if c.nom[0:13] == 'Supg_Option_' and c.valeur!=None:
               suf=c.nom[13:]
               index=dicoSuf[suf]
-              listeAdvection[index]=DicoEnumCasEnInverse['Supg_Option'][c.valeur]
+              listeAdvection[index]=self.DicoEnumCasEnInverse['Supg_Option'][c.valeur]
            if c.nom[0:23] == 'Upwind_Coefficients_Of_' and c.valeur!=None:
               suf=c.nom[23:]
               index=dicoSuf[suf]