Ce module contient la classe BUREAU qui gere les JDC ouverts
"""
# Modules Python
-import os,string,sys
+import os,string,sys,re
import traceback
import Pmw
from widgets import askopenfilename,asksaveasfilename
from Editeur import comploader
+dict_defext = {"ASTER":".comm","HOMARD":".py","OPENTURNS":".comm"}
+dict_filtyp = {"ASTER":(("ASTER", ".comm"),),"HOMARD":(("HOMARD", ".py"),),"OPENTURNS":(("OPENTURNS", ".comm"),)}
+
class BUREAU:
menu_defs=[
('Fichier',[
),
('Jeu de commandes',[
('Rapport de validation','visuCRJDC','<Control-r>'),
- ('Fichier à plat','visu_a_plat','<Control-p>'),
+ ('Fichier a plat','visu_a_plat','<Control-p>'),
('Fichier .py','visuJDC_py'),
('Fichier source','visu_txt_brut_JDC','<Control-b>'),
- ('Paramètres Eficas','affichage_fichier_ini'),
- ('Mots-clés inconnus','mc_inconnus'),
+ ('Parametres Eficas','affichage_fichier_ini'),
+ ('Mots-cles inconnus','mc_inconnus'),
]
),
('Traduction',[
),
]
- button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
+ button_defs = (('New24',"newJDC","Creation d'un nouveau fichier",'always'),
('Open24',"openJDC","Ouverture d'un fichier existant",'always'),
('Save24',"saveJDC","Sauvegarde du fichier courant",'always'),
('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
None,
('Copy24',"copy","Copie l'objet courant",'jdc'),
('Cut24',"cut","Coupe l'objet courant",'jdc'),
- ('Paste24',"paste","Colle l'objet copié après l'objet courant",'jdc'),
+ ('Paste24',"paste","Colle l'objet copie apres l'objet courant",'jdc'),
None,
('Delete24',"delete","Supprime l'objet courant",'jdc'),
('Help24',"view_doc","Documentation de l'objet courant",'jdc')
self.parent=parent
self.appli=appli
if self.appli.test == 0 :
- splash._splash.configure(text = "Création du bureau")
+ splash._splash.configure(text = "Creation du bureau")
self.nb = Pmw.NoteBook(self.parent,raisecommand=self.selectJDC)
self.nb.pack(fill='both',expand=1)
self.JDCDisplay_courant=None
def cree_cataitem(self):
"""
- On récupère dans l'appli_composant readercata les variables
- qui servent par la suite pour la création des JDC
+ On recupere dans l'appli_composant readercata les variables
+ qui servent par la suite pour la creation des JDC
"""
self.cataitem=self.appli.readercata.cataitem
self.cata=self.appli.readercata.cata
def selectJDC(self,event=None):
"""
- Cette méthode est appelée chaque fois que l'on sélectionne
+ Cette methode est appelee chaque fois que l'on selectionne
l'onglet d'un JDC dans le NoteBook des JDC.
Elle permet de stocker dans les variable self.JDC et
self.JDCDisplay_courant les valeurs concernant le JDC courant
def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY,enregistre="non"):
"""
- Lance l'affichage du JDC cad création du JDCDisplay
- Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
+ Lance l'affichage du JDC cad creation du JDCDisplay
+ Rajoute le JDCDisplay a la liste des JDCDisplay si label_onglet == None cad si on cree
bien un nouveau JDCDisplay et non si on remplace (renommage de l'onglet)
"""
self.JDC=JDC
def closeJDCDISPLAY(self,jdc):
"""
- Ferme le jdcdisplay spécifié par l'argument jdc
+ Ferme le jdcdisplay specifie par l'argument jdc
"""
if jdc is self.JDCDisplay_courant:
# on ferme le jdcdisplay courant
def closeJDC (self,event=None) :
"""
- Ferme le JDC associé au JDCDISPLAY selectionné
+ Ferme le JDC associe au JDCDISPLAY selectionne
"""
if self.JDCDisplay_courant :
self.JDCDisplay_courant.jdc.close()
def closeSelectedJDC (self) :
"""
- Ferme le JDC courant et détruit l'onglet associé dans le notebook self.nb
+ Ferme le JDC courant et detruit l'onglet associe dans le notebook self.nb
"""
if self.JDCDisplay_courant.modified == 'o' :
message = "Voulez-vous sauvegarder le jeu de commandes "+self.JDC.nom+" courant ?"
def visuCR(self,mode):
"""
- Méthode permettant l'affichage du rapport de validation
+ Methode permettant l'affichage du rapport de validation
"""
if mode == 'JDC':
if not hasattr(self,'JDC') : return
elif mode == 'CATA':
from Noyau.N_CR import CR
cr = CR()
- cr.debut = "Début rapport de validation du catalogue"
+ cr.debut = "Debut rapport de validation du catalogue"
cr.fin = "Fin rapport de validation du catalogue"
titre="rapport de validation du catalogue"
if hasattr(self,'cata_ordonne_cr') :
def openJDC(self,event=None,file=None,units=None,enregistre="oui"):
"""
- Demande à l'utilisateur quel JDC existant il veut ouvrir
+ Demande a l'utilisateur quel JDC existant il veut ouvrir
"""
if self.code == 'ASTER':
filetypes = ( ("format "+self.appli.format_fichier.get(), ".com*"),("Tous",'*'))
p.readfile(file)
text=p.convert('exec',self.appli)
if not p.cr.estvide():
- self.appli.affiche_infos("Erreur à la conversion")
+ self.appli.affiche_infos("Erreur a la conversion")
Fenetre(self.appli,
titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
texte = str(p.cr)).wait()
J.analyse()
txt_exception = J.cr.get_mess_exception()
if txt_exception :
- # des exceptions ont été levées à la création du JDC
+ # des exceptions ont ete levees a la creation du JDC
# --> on affiche les erreurs mais pas le JDC
self.JDC=J
self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
self.appli.toolbar.active_boutons()
# si le JDC ne contient rien (vide), on retourne ici
if len(self.JDC.etapes) == 0 : return
- # dans le cas où le JDC est invalide, on affiche son CR
+ # dans le cas ou le JDC est invalide, on affiche son CR
if not self.JDC.isvalid():
self.appli.top.update()
self.visuCR(mode='JDC')
def GetLabelJDC(self,nb_jdc = 'absent'):
"""
- Retourne le label de l'onglet du NoteBook associé au JDC à afficher
+ Retourne le label de l'onglet du NoteBook associe au JDC a afficher
"""
if nb_jdc == 'absent':
nb_jdc = len(self.nb.pagenames())
def saveasJDC(self,event=None):
"""
- Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
+ Sauvegarde le JDC courant en demandant imperativement a l'utilisateur de
donner le nom du fichier de sauvegarde
"""
self.saveJDC(echo='oui')
jdc_formate=g.gener(self.JDC,format='beautifie')
if format == 'homard':
self.jdc_homard=g.get_homard()
+ elif format == 'openturns' :
+ self.jdc_openturn_xml=g.getOpenturnsXML()
+ self.jdc_openturn_std=g.getOpenturnsSTD()
if not g.cr.estvide():
- self.appli.affiche_infos("Erreur à la generation")
- showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
+ self.appli.affiche_infos("Erreur a la generation")
+ showerror("Erreur a la generation","EFICAS ne sait pas convertir ce JDC")
return
else:
# Il n'existe pas c'est une erreur
if echo =='oui' or self.JDCDisplay_courant.fichier == None:
ok = self.asknomsauvegardeJDC()
elif self.JDCDisplay_courant.fichier != None :
- # le JDC a déjà un nom : on sauvegarde directement sans demander
- # un autre nom au développeur
+ # le JDC a deja un nom : on sauvegarde directement sans demander
+ # un autre nom au developpeur
if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
- showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
+ showinfo("Erreur","Probleme a la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
#return 0
ok = 0
else :
if self.appli.format_fichier.get() == 'homard':
self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
+ elif self.appli.format_fichier.get() == 'openturns':
+ self.save_openturns(self.JDCDisplay_courant.fichier[0:-3],
+ self.jdc_openturn_xml,
+ self.jdc_openturn_std)
self.JDCDisplay_courant.stop_modif()
- self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
+ self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuee")
ok = 1
if ok and self.appli.salome:
- # eficas a été lancé à partir deSalome
- #1)ajout dans l'arbre d'étude du nom du jdc
+ # eficas a ete lance a partir deSalome
+ #1)ajout dans l'arbre d'etude du nom du jdc
if self.appli.salome==0 : return 0
ok, msg = self.appli.addJdcInSalome( self.JDCDisplay_courant.fichier )
print 'CS_pbruno if len(SALOMchier_unite) > 0 :???????'
self.appli.creeConfigTxt( self.appli.CONFIGURATION.initialdir, SALOME_UNIQUE_BASE_Panel.dict_fichier_unite )
- #3)création/mise à jours d'un maillage dans Salome
- self.appli.createOrUpdateMesh()
+ #3)creation/mise a jours d'un maillage dans Salome
+ if self.code == 'ASTER':
+ self.appli.createOrUpdateMesh()
return ok
def asknomsauvegardeJDC(self):
- """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
+ """ Demande a l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
titre = "Sauvegarde d'un fichier de commandes "+self.code
- if self.code == 'ASTER':
- defext = ".comm"
- filtyp = ( ("ASTER", ".comm"),)
+ if dict_defext.has_key(self.code) :
+ defext = dict_defext[self.code]
+ filtyp = dict_filtyp[self.code]
else :
- defext = ".py"
- filtyp = ( (self.code, ".py"),)
+ defext = ".py"
+ filtyp = ( (self.code, ".py"),)
sauvegarde = asksaveasfilename(title=titre,
defaultextension=defext,
filetypes = filtyp,
#initialdir = self.appli.CONFIGURATION.rep_user)
if sauvegarde :
if not save_in_file(sauvegarde,self.jdc_fini,None) :
- showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
+ showinfo("Erreur","Probleme a la sauvegarde du fichier "+`sauvegarde`)
return 0
else :
if self.appli.format_fichier.get() == 'homard':
self.save_homard(sauvegarde,self.jdc_homard)
+ elif self.appli.format_fichier.get() == 'openturns':
+ self.save_openturns(sauvegarde,
+ self.jdc_openturn_xml,
+ self.jdc_openturn_std)
self.JDCDisplay_courant.stop_modif()
- self.appli.affiche_infos("Sauvegarde effectuée")
+ self.appli.affiche_infos("Sauvegarde effectuee")
if sauvegarde != self.JDCDisplay_courant.fichier :
- # l'utilisateur a sauvegardé le JDC sous un autre nom
+ # l'utilisateur a sauvegarde le JDC sous un autre nom
self.JDCDisplay_courant.fichier = sauvegarde
self.JDCName = self.JDC.nom = stripPath(sauvegarde)
self.JDC.changefichier(sauvegarde)
return 0
def changeNomPage(self):
- """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
- et recrée un autre onglet à la même place avec le bon nom
+ """ Change le nom de l'onglet contenant le JDC courant : en fait detruit l'actuel
+ et recree un autre onglet a la même place avec le bon nom
"""
nom = self.JDCName
self.JDCDisplay_courant.jdc.nom = nom
def exitEFICAS(self,event=None):
"""
- Permet de sortir d'EFICAS en demandant à l'utilisateur
+ Permet de sortir d'EFICAS en demandant a l'utilisateur
s'il veut sauvegarder les modifications en cours
"""
liste = self.GetListeJDCaSauvegarder()
if liste != [] :
- # Certains fichiers n'ont pas été sauvegardés ...
+ # Certains fichiers n'ont pas ete sauvegardes ...
if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
test = self.saveall(liste)
if test != 1 :
return
def GetListeJDCaSauvegarder(self) :
- """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
+ """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont ete modifies """
if not self.JDCDisplay_courant : return []
if len(self.liste_JDCDisplay) == 0 : return l
l = []
def visuJDC_py(self,event=None):
"""
- Méthode permettant d'afficher dans une fenêtre à part l'écho au
+ Methode permettant d'afficher dans une fenêtre a part l'echo au
format python du jdc courant
"""
if not hasattr(self,'JDC') : return
jdc_fini = self.get_text_JDC('python')
if jdc_fini == None : return
Fenetre(self.appli,
- titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
+ titre = 'fichier '+ self.JDCName + ' a la syntaxe Python',
texte = jdc_fini)
def visuJDC(self):
"""
- Méthode permettant d'afficher dans une fenêtre à part l'écho au
+ Methode permettant d'afficher dans une fenêtre a part l'echo au
format .comm ou .py du jdc courant
"""
if not hasattr(self,'JDC') : return
- titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
+ titre = 'fichier '+ self.JDCName + ' a la syntaxe '+ self.code
format=self.appli.format_fichier.get()
self.jdc_fini = self.get_text_JDC(format)
if self.jdc_fini == None : return
g=generator.plugins[format]()
jdc_formate=g.gener(self.JDC,format='beautifie')
if not g.cr.estvide():
- self.appli.affiche_infos("Erreur à la generation")
- showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
+ self.appli.affiche_infos("Erreur a la generation")
+ showerror("Erreur a la generation","EFICAS ne sait pas convertir ce JDC")
return
else:
return jdc_formate
def view_doc(self):
"""
Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
- - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
- - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
+ - Ne fonctionne pas sous UNIX (chemin d'acces Acrobat Reader)
+ - indication du chemin d'acces aux fichiers pdf a revoir : trop statique
"""
if not self.JDCDisplay_courant : return
try:
def visu_a_plat(self,event=None):
"""
- Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
+ Methode permettant d'afficher dans une fenêtre a part l'echo 'a plat' du jdc courant
"""
if not hasattr(self,'JDC') : return
- titre = 'fichier '+ self.JDCName + ' à plat '
+ titre = 'fichier '+ self.JDCName + ' a plat '
self.jdc_fini = self.get_text_JDC('aplat')
if self.jdc_fini == None : return
self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
def visu_txt_brut_JDC(self,event=None):
"""
- Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
+ Methode permettant d'afficher le jeu de commandes tel qu'il a ete passe au JDC
"""
if not hasattr(self,'JDC') : return
titre = "fichier de commandes utilisateur"
def affichage_fichier_ini(self):
"""
- Affichage des valeurs des paramètres relus par Eficas
+ Affichage des valeurs des parametres relus par Eficas
"""
self.appli.CONFIGURATION.affichage_fichier_ini()
import eficasEtude
self.appli.salome.rangeInStudy(file_homard,"_CONF")
+ def save_openturns(self,nom,texteXML,texteSTD):
+ nomSansSuf=nom[:nom.rfind(".")]
+ fileXML=nomSansSuf + '.xml'
+ fileSTD=nomSansSuf + '_Std.py'
+ try:
+ f=open(fileXML,'w')
+ f.write(texteXML)
+ f.close()
+ except:
+ print "Pb sauvegarde openturns pour le format xml"
+ try:
+ #print texteSTD
+ if nomSansSuf.rfind("/") > 0 :
+ nomSansSuf=nomSansSuf[nomSansSuf.rfind("/")+1:]
+ texteSTD=re.sub('XXXXXX',nomSansSuf,texteSTD)
+ #print texteSTD
+ f=open(fileSTD,'w')
+ f.write(texteSTD)
+ f.close()
+ except:
+ print "Pb sauvegarde openturns pour le format STD"
+ if self.appli.salome == 1:
+ ok, msg = self.appli.addJdcInSalome( fileSTD )
+ ok, msg = self.appli.addJdcInSalome( fileXML )
+
# ---------------------------------------------------------------------------
-# Méthodes liées aux mots-clés inconnus
+# Methodes liees aux mots-cles inconnus
# ---------------------------------------------------------------------------
def mc_inconnus(self):
def TraduitFichier(self,event=None):
directory = self.appli.CONFIGURATION.rep_user
- FichieraTraduire = askopenfilename(title="Nom du Fichier à Traduire",
+ FichieraTraduire = askopenfilename(title="Nom du Fichier a Traduire",
defaultextension=".comm",
initialdir = directory
)