From: pascale.noyret Date: Fri, 9 Jun 2017 08:54:31 +0000 (+0200) Subject: pourTelemac X-Git-Tag: Salome_8_3_Hydro_2_0rc1~12 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=8847a378fe84b50f118459deae72fc0164beb9ec;p=modules%2Feficas.git pourTelemac --- diff --git a/Editeur/Eficas_utils.py b/Editeur/Eficas_utils.py new file mode 100644 index 00000000..dd5ac0cd --- /dev/null +++ b/Editeur/Eficas_utils.py @@ -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 index dd5ac0cd..00000000 --- a/Editeur/utils.py +++ /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 - diff --git a/InterfaceQT4/configuration.py b/InterfaceQT4/configuration.py index 8b7bb7d5..ebdbdf94 100644 --- a/InterfaceQT4/configuration.py +++ b/InterfaceQT4/configuration.py @@ -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): #------------------------------- diff --git a/InterfaceQT4/editor.py b/InterfaceQT4/editor.py index 5ca8a375..134549a5 100755 --- a/InterfaceQT4/editor.py +++ b/InterfaceQT4/editor.py @@ -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 (*)") diff --git a/InterfaceQT4/qtEficas.py b/InterfaceQT4/qtEficas.py index 21b86ef9..3d6263b6 100755 --- a/InterfaceQT4/qtEficas.py +++ b/InterfaceQT4/qtEficas.py @@ -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'): diff --git a/InterfaceQT4/viewManager.py b/InterfaceQT4/viewManager.py index e75c8a9b..85459d8c 100644 --- a/InterfaceQT4/viewManager.py +++ b/InterfaceQT4/viewManager.py @@ -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 (*)') diff --git a/convert/convert_TELEMAC.py b/convert/convert_TELEMAC.py index ac524184..b5330f4b 100644 --- a/convert/convert_TELEMAC.py +++ b/convert/convert_TELEMAC.py @@ -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') : diff --git a/generator/generator_TELEMAC.py b/generator/generator_TELEMAC.py index 2ad9f845..b5758f5d 100644 --- a/generator/generator_TELEMAC.py +++ b/generator/generator_TELEMAC.py @@ -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]