From ee6e95519e12cea3df1a3315ae62c4af97719e5d Mon Sep 17 00:00:00 2001 From: Pascale Noyret Date: Thu, 24 Jan 2008 10:15:29 +0000 Subject: [PATCH] *** empty log message *** --- InterfaceQT/editor.py | 8 +- InterfaceQT/qtEficas.py | 8 +- InterfaceQT/viewManager.py | 1 + InterfaceTK/bureau.py | 162 +++++++++++++++++++++++-------------- InterfaceTK/eficas_go.py | 3 + InterfaceTK/readercata.py | 4 +- 6 files changed, 116 insertions(+), 70 deletions(-) diff --git a/InterfaceQT/editor.py b/InterfaceQT/editor.py index e038fd7f..211d2dbd 100644 --- a/InterfaceQT/editor.py +++ b/InterfaceQT/editor.py @@ -30,12 +30,15 @@ class JDCEditor(QSplitter): Editeur de jdc """ - def __init__(self,fn = None, jdc = None ,parent=None, editor = None, units = None): - #--------------------------------------------------------------------------------# + def __init__(self, fn=None, jdc=None ,parent=None, editor=None, units=None): + #------------------------------------------------------------------------- QSplitter.__init__(self, parent,'') VERSION_CODE = session.d_env.cata + self.parent = parent + self.salome = self.parent.salome + self.top = None self.code = prefs.code self.version_code = VERSION_CODE @@ -53,7 +56,6 @@ class JDCEditor(QSplitter): if hasattr(qApp.mainWidget(),"statusBar"): self.sb = qApp.mainWidget().statusBar() - self.parent = parent self.vm = parent #viewManager self.fileName = fn self.fileInfo = None diff --git a/InterfaceQT/qtEficas.py b/InterfaceQT/qtEficas.py index e3785743..5dd2b9a2 100644 --- a/InterfaceQT/qtEficas.py +++ b/InterfaceQT/qtEficas.py @@ -29,8 +29,11 @@ class Appli(Eficas): @param loc locale to be used by the UI (string) @param splash reference to the splashscreen (UI.SplashScreen.SplashScreen) """ - Eficas.__init__(self) + self.salome=0 + self.ihm="QT" + self.code=code + Eficas.__init__(self) if code == "ASTER" : from Aster import prefs sys.path.append(INSTALLDIR+"/Aster") @@ -63,9 +66,6 @@ class Appli(Eficas): self.setAcceptDrops(1) self.ficPatrons={} self.initPatrons() - self.ihm="QT" - self.salome=0 - self.code=code self.monAssistant=QAssistantClient(QString(""), self.viewmanager) diff --git a/InterfaceQT/viewManager.py b/InterfaceQT/viewManager.py index 50108524..fa45504b 100644 --- a/InterfaceQT/viewManager.py +++ b/InterfaceQT/viewManager.py @@ -2330,6 +2330,7 @@ class MyTabview(Tabview): def __init__(self, parent, ui): Tabview.__init__(self, parent, ui) self.appli=parent + self.salome=self.appli.salome self.initRecent() def initRecent(self) : diff --git a/InterfaceTK/bureau.py b/InterfaceTK/bureau.py index edfd2e68..338d2fc1 100644 --- a/InterfaceTK/bureau.py +++ b/InterfaceTK/bureau.py @@ -22,7 +22,7 @@ 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 @@ -44,6 +44,9 @@ from Traducteur import traduitV7V8 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',[ @@ -64,11 +67,11 @@ class BUREAU: ), ('Jeu de commandes',[ ('Rapport de validation','visuCRJDC',''), - ('Fichier à plat','visu_a_plat',''), + ('Fichier a plat','visu_a_plat',''), ('Fichier .py','visuJDC_py'), ('Fichier source','visu_txt_brut_JDC',''), - ('Paramètres Eficas','affichage_fichier_ini'), - ('Mots-clés inconnus','mc_inconnus'), + ('Parametres Eficas','affichage_fichier_ini'), + ('Mots-cles inconnus','mc_inconnus'), ] ), ('Traduction',[ @@ -81,7 +84,7 @@ class BUREAU: ), ] - 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'), @@ -89,7 +92,7 @@ class BUREAU: 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') @@ -107,7 +110,7 @@ class BUREAU: 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 @@ -123,8 +126,8 @@ class BUREAU: 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 @@ -135,7 +138,7 @@ class BUREAU: 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 @@ -199,8 +202,8 @@ class BUREAU: 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 @@ -235,7 +238,7 @@ class BUREAU: 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 @@ -258,14 +261,14 @@ class BUREAU: 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 ?" @@ -298,7 +301,7 @@ class BUREAU: 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 @@ -309,7 +312,7 @@ class BUREAU: 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') : @@ -324,7 +327,7 @@ class BUREAU: 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",'*')) @@ -356,7 +359,7 @@ class BUREAU: 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() @@ -386,7 +389,7 @@ class BUREAU: 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) @@ -397,7 +400,7 @@ class BUREAU: 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') @@ -416,7 +419,7 @@ class BUREAU: 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()) @@ -429,7 +432,7 @@ class BUREAU: 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') @@ -452,9 +455,12 @@ class BUREAU: 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 @@ -466,22 +472,26 @@ class BUREAU: 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 ) @@ -491,19 +501,20 @@ class BUREAU: 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, @@ -512,15 +523,19 @@ class BUREAU: #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) @@ -530,8 +545,8 @@ class BUREAU: 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 @@ -542,12 +557,12 @@ class BUREAU: 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 : @@ -559,7 +574,7 @@ class BUREAU: 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 = [] @@ -596,23 +611,23 @@ class BUREAU: 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 @@ -624,8 +639,8 @@ class BUREAU: 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 @@ -638,8 +653,8 @@ class BUREAU: 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: @@ -661,17 +676,17 @@ class BUREAU: 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" @@ -690,7 +705,7 @@ class BUREAU: 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() @@ -719,8 +734,33 @@ class BUREAU: 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): @@ -738,7 +778,7 @@ class BUREAU: 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 ) diff --git a/InterfaceTK/eficas_go.py b/InterfaceTK/eficas_go.py index ab4bc3bb..e6b00c5c 100644 --- a/InterfaceTK/eficas_go.py +++ b/InterfaceTK/eficas_go.py @@ -47,6 +47,9 @@ def lance_eficas(code=None,fichier=None): """ # Analyse des arguments de la ligne de commande if code !=None : prefs.code=code + if code !=None : + sys.argv.append("-k") + sys.argv.append(code) options=session.parse(sys.argv) code=options.code diff --git a/InterfaceTK/readercata.py b/InterfaceTK/readercata.py index 9812a27f..7ae80662 100644 --- a/InterfaceTK/readercata.py +++ b/InterfaceTK/readercata.py @@ -95,7 +95,6 @@ class READERCATA: self.appli.format_fichier.set(cata[3]) elif len(liste_cata_possibles)==1: self.fic_cata = liste_cata_possibles[0][2] - self.code = self.appli.CONFIGURATION.catalogues[0][0] self.version_code = liste_cata_possibles[0][1] self.appli.format_fichier.set(liste_cata_possibles[0][3]) else: @@ -117,7 +116,8 @@ class READERCATA: try : a=self.appli.CONFIGURATION.dRepMat[self.version_code] except : - print "Probleme avec le repertoire materiau" + if self.code == "ASTER" : + print "Probleme avec le repertoire materiau" a='.' self.appli.CONFIGURATION.rep_mat=a -- 2.39.2