# -*- 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 generateur de fichier au format asterv5 pour EFICAS.
"""
import traceback
import types,string
-
+from Extensions.i18n import tr
+from Extensions.eficas_exception import EficasException
from Noyau import N_CR
from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
def entryPoint():
"""
- Retourne les informations nécessaires pour le chargeur de plugins
+ Retourne les informations necessaires pour le chargeur de plugins
- Ces informations sont retournées dans un dictionnaire
+ Ces informations sont retournees dans un dictionnaire
"""
return {
# Le nom du plugin
'name' : 'asterv5',
- # La factory pour créer une instance du plugin
+ # La factory pour creer une instance du plugin
'factory' : AsterGenerator,
}
Ce generateur parcourt un objet de type JDC et produit
un fichier au format asterv5
- L'acquisition et le parcours sont réalisés par la méthode
+ L'acquisition et le parcours sont realises par la methode
generator.gener(objet_jdc,format)
- L'écriture du fichier au format asterv5 est réalisée par appel de la méthode
+ L'ecriture du fichier au format asterv5 est realisee par appel de la methode
generator.writefile(nom_fichier)
- Ses caractéristiques principales sont exposées dans des attributs
+ Ses caracteristiques principales sont exposees dans des attributs
de classe :
- - extensions : qui donne une liste d'extensions de fichier préconisées
+ - extensions : qui donne une liste d'extensions de fichier preconisees
"""
- # Les extensions de fichier préconisées
+ # Les extensions de fichier preconisees
extensions=('.comm',)
def __init__(self,cr=None):
else:
self.cr=N_CR.CR(debut='CR generateur format asterv5',
fin='fin CR format asterv5')
- # Le texte au format asterv5 est stocké dans l'attribut text
+ # Le texte au format asterv5 est stocke dans l'attribut text
self.text=''
def writefile(self,filename):
def gener(self,obj,format='brut'):
"""
- Retourne une représentation du JDC obj sous une
- forme qui est paramétrée par format.
+ Retourne une representation du JDC obj sous une
+ forme qui est parametree par format.
Si format vaut 'brut', retourne une liste de listes de ...
- Si format vaut 'standard', retourne un texte obtenu par concaténation de la liste
- Si format vaut 'beautifie', retourne le meme texte beautifié
+ Si format vaut 'standard', retourne un texte obtenu par concatenation de la liste
+ Si format vaut 'beautifie', retourne le meme texte beautifie
"""
liste= self.generator(obj)
if format == 'brut':
jdc_formate = Formatage(liste,sep=':',l_max=72)
self.text=jdc_formate.formate_jdc()
else:
- raise "Format pas implémenté : "+format
+ raise EficasException(tr("Format pas implemente : %s", format))
return self.text
def generator(self,obj):
"""
Cette methode joue un role d'aiguillage en fonction du type de obj
- On pourrait utiliser les méthodes accept et visitxxx à la
- place (dépend des gouts !!!)
+ On pourrait utiliser les methodes accept et visitxxx à la
+ place (depend des gouts !!!)
"""
- # ATTENTION a l'ordre des tests : il peut avoir de l'importance (héritage)
+ # ATTENTION a l'ordre des tests : il peut avoir de l'importance (heritage)
if isinstance(obj,PROC_ETAPE):
return self.generPROC_ETAPE(obj)
elif isinstance(obj,MACRO_ETAPE):
return self.generETAPE_NIVEAU(obj)
elif isinstance(obj,COMMENTAIRE):
return self.generCOMMENTAIRE(obj)
- # Attention doit etre placé avant PARAMETRE (raison : héritage)
+ # Attention doit etre place avant PARAMETRE (raison : heritage)
elif isinstance(obj,PARAMETRE_EVAL):
return self.generPARAMETRE_EVAL(obj)
elif isinstance(obj,PARAMETRE):
elif isinstance(obj,JDC):
return self.generJDC(obj)
else:
- raise "Type d'objet non prévu",obj
+ raise EficasException(tr("Type d'objet non prevu : %s", repr(obj)))
def generJDC(self,obj):
"""
- Cette méthode convertit un objet JDC en une liste de chaines de
- caractères à la syntaxe asterv5
+ Cette methode convertit un objet JDC en une liste de chaines de
+ caracteres à la syntaxe asterv5
"""
l=[]
if obj.definition.l_niveaux == ():
for etape_niveau in obj.etapes_niveaux:
l.extend(self.generator(etape_niveau))
if l != [] :
- # Si au moins une étape, on ajoute le retour chariot sur la dernière étape
+ # Si au moins une etape, on ajoute le retour chariot sur la derniere etape
if type(l[-1])==types.ListType:
l[-1][-1] = l[-1][-1]+'\n'
elif type(l[-1])==types.StringType:
def generCOMMANDE_COMM(self,obj):
"""
- Cette méthode convertit un COMMANDE_COMM
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit un COMMANDE_COMM
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
l_lignes = string.split(obj.valeur,'\n')
txt=''
def generEVAL(self,obj):
"""
- Cette méthode convertit un EVAL
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit un EVAL
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
- return 'EVAL("'+ obj.valeur +'")'
+ return 'EVAL(u"'+ obj.valeur +'")'
def generCOMMENTAIRE(self,obj):
"""
- Cette méthode convertit un COMMENTAIRE
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit un COMMENTAIRE
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
l_lignes = string.split(obj.valeur,'\n')
txt=''
def generPARAMETRE_EVAL(self,obj):
"""
- Cette méthode convertit un PARAMETRE_EVAL
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit un PARAMETRE_EVAL
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
if obj.valeur == None:
return obj.nom + ' = None ;\n'
def generPARAMETRE(self,obj):
"""
- Cette méthode convertit un PARAMETRE
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit un PARAMETRE
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
if type(obj.valeur) == types.StringType:
return obj.nom + " = '" + obj.valeur + "';\n"
def generETAPE_NIVEAU(self,obj):
"""
- Cette méthode convertit une étape niveau
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit une etape niveau
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
l=[]
if obj.etapes_niveaux == []:
def generETAPE(self,obj):
"""
- Cette méthode convertit une étape
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit une etape
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
try:
if obj.reuse != None:
def generFORM_ETAPE(self,obj):
"""
- Méthode particulière pour les objets de type FORMULE
+ Methode particuliere pour les objets de type FORMULE
"""
l=[]
nom = obj.get_nom()
def generMACRO_ETAPE(self,obj):
"""
- Cette méthode convertit une macro-étape
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit une macro-etape
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
if obj.definition.nom == 'FORMULE' : return self.gen_ast_formule(obj)
try:
def gen_ast_formule(self,obj):
"""
- Méthode gen_ast particuliere aux objets de type FORMULE
+ Methode gen_ast particuliere aux objets de type FORMULE
"""
label='!FORMULE('
try:
def generPROC_ETAPE(self,obj):
"""
- Cette méthode convertit une étape
- en une liste de chaines de caractères à la syntaxe asterv5
+ Cette methode convertit une etape
+ en une liste de chaines de caracteres à la syntaxe asterv5
"""
l=[]
label=obj.definition.nom+'('
def generMCSIMP(self,obj) :
"""
- Convertit un objet MCSIMP en une liste de chaines de caractères à la
+ Convertit un objet MCSIMP en une liste de chaines de caracteres à la
syntaxe asterv5
"""
if type(obj.valeur) == types.TupleType :
if type(val) == types.InstanceType :
if isinstance(val,PARAMETRE):
# il ne faut pas prendre la string que retourne gen_ast
- # mais seulement le nom dans le cas d'un paramètre
+ # mais seulement le nom dans le cas d'un parametre
s = s + val.nom
else:
s = s + self.generator(val)
if type(obj.valeur) == types.InstanceType :
if isinstance(obj.valeur,PARAMETRE):
# il ne faut pas prendre la string que retourne gen_ast
- # mais seulement str dans le cas d'un paramètre
+ # mais seulement str dans le cas d'un parametre
s = obj.valeur.nom
else:
s = self.generator(obj.valeur)
def repr_float(self,valeur):
"""
- Cette fonction représente le réel valeur comme une chaîne de caractères
- sous forme mantisse exposant si nécessaire cad si le nombre contient plus de 5 caractères
- NB : valeur est un réel au format Python ou une chaîne de caractères représentant un réel
+ Cette fonction represente le reel valeur comme une chaîne de caracteres
+ sous forme mantisse exposant si necessaire cad si le nombre contient plus de 5 caracteres
+ NB : valeur est un reel au format Python ou une chaîne de caracteres representant un reel
"""
if type(valeur) == types.StringType : valeur = eval(valeur)
if valeur == 0. : return '0.0'
if abs(valeur) > 0.01 : return repr(valeur)
t=repr(valeur)
if string.find(t,'e') != -1 or string.find(t,'E') != -1 :
- # le réel est déjà sous forme mantisse exposant !
+ # le reel est dejà sous forme mantisse exposant !
# --> on remplace e par E
t=string.replace(t,'e','E')
- # --> on doit encore vérifier que la mantisse contient bien un '.'
+ # --> on doit encore verifier que la mantisse contient bien un '.'
if string.find(t,'.')!= -1:
return t
else:
t=t[1:]
cpt = 0
if string.atof(t[0]) == 0.:
- # réel plus petit que 1
+ # reel plus petit que 1
neg = 1
t=t[2:]
cpt=1
for c in t[1:]:
s=s+c
else:
- # réel plus grand que 1
+ # reel plus grand que 1
s=s+t[0]+'.'
if string.atof(t[1:]) == 0.:
l=string.split(t[1:],'.')
def generASSD(self,obj):
"""
- Convertit un objet dérivé d'ASSD en une chaine de caractères à la
+ Convertit un objet derive d'ASSD en une chaine de caracteres à la
syntaxe asterv5
"""
return obj.get_name()
def generMCFACT(self,obj):
"""
- Convertit un objet MCFACT en une liste de chaines de caractères à la
+ Convertit un objet MCFACT en une liste de chaines de caracteres à la
syntaxe asterv5
"""
l=[]
def generMCList(self,obj):
"""
- Convertit un objet MCList en une liste de chaines de caractères à la
+ Convertit un objet MCList en une liste de chaines de caracteres à la
syntaxe asterv5
"""
l=[]
def generMCBLOC(self,obj):
"""
- Convertit un objet MCBLOC en une liste de chaines de caractères à la
+ Convertit un objet MCBLOC en une liste de chaines de caracteres à la
syntaxe asterv5
"""
l=[]