1 # -*- coding: utf-8 -*-
2 # CONFIGURATION MANAGEMENT OF EDF VERSION
3 # ======================================================================
4 # COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
5 # THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
6 # IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
7 # THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
8 # (AT YOUR OPTION) ANY LATER VERSION.
10 # THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
11 # WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
12 # MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
13 # GENERAL PUBLIC LICENSE FOR MORE DETAILS.
15 # YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
16 # ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
17 # 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
20 # ======================================================================
22 Ce module contient la classe BUREAU qui gere les JDC ouverts
28 from widgets import askopenfilename,asksaveasfilename
29 from widgets import showinfo,askyesno,showerror
37 from jdcdisplay import JDCDISPLAY
38 from utils import extension_fichier,stripPath,save_in_file
39 from widgets import Fenetre,Ask_Format_Fichier
40 from fenetre_mc_inconnus import fenetre_mc_inconnus
41 from Ihm import CONNECTOR
48 ('Nouveau','newJDC','<Control-n>'),
49 ('Ouvrir','openJDC','<Control-o>'),
50 ('Enregistrer','saveJDC','<Control-e>'),
51 ('Enregistrer sous','saveasJDC','<Control-s>'),
53 ('Fermer','closeJDC','<Control-f>'),
54 ('Quitter','exitEFICAS','<Control-q>'),
58 ('Copier','copy','<Control-c>'),
59 ('Couper','cut','<Control-x>'),
60 ('Coller','paste','<Control-v>'),
64 ('Rapport de validation','visuCRJDC','<Control-r>'),
65 ('Fichier à plat','visu_a_plat','<Control-p>'),
66 ('Fichier .py','visuJDC_py'),
67 ('Fichier source','visu_txt_brut_JDC','<Control-b>'),
68 ('Paramètres Eficas','affichage_fichier_ini'),
69 ('Mots-clés inconnus','mc_inconnus'),
73 ('Aide EFICAS','aideEFICAS'),
78 button_defs = (('New24',"newJDC","Création d'un nouveau fichier",'always'),
79 ('Open24',"openJDC","Ouverture d'un fichier existant",'always'),
80 ('Save24',"saveJDC","Sauvegarde du fichier courant",'always'),
81 ('Zoom24',"visuJDC","Visualisation du fichier de commandes",'always'),
83 ('Copy24',"copy","Copie l'objet courant",'jdc'),
84 ('Cut24',"cut","Coupe l'objet courant",'jdc'),
85 ('Paste24',"paste","Colle l'objet copié après l'objet courant",'jdc'),
87 ('Delete24',"delete","Supprime l'objet courant",'jdc'),
88 ('Help24',"view_doc","Documentation de l'objet courant",'jdc')
91 menu_defs=prefs.menu_defs['bureau']
95 button_defs=prefs.button_defs['bureau']
99 def __init__(self,appli,parent):
102 if self.appli.test == 0 :
103 splash._splash.configure(text = "Création du bureau")
104 self.nb = Pmw.NoteBook(self.parent,raisecommand=self.selectJDC)
105 self.nb.pack(fill='both',expand=1)
106 self.JDCDisplay_courant=None
108 self.liste_JDCDisplay=[]
109 comploader.charger_composants()
113 def cree_cataitem(self):
115 On récupère dans l'appli_composant readercata les variables
116 qui servent par la suite pour la création des JDC
118 self.cataitem=self.appli.readercata.cataitem
119 self.cata=self.appli.readercata.cata
120 self.cata_ordonne_dico=self.appli.readercata.cata_ordonne_dico
121 self.code=self.appli.readercata.code
122 self.version_code=self.appli.readercata.version_code
123 self.fic_cata=self.appli.readercata.fic_cata
125 def selectJDC(self,event=None):
127 Cette méthode est appelée chaque fois que l'on sélectionne
128 l'onglet d'un JDC dans le NoteBook des JDC.
129 Elle permet de stocker dans les variable self.JDC et
130 self.JDCDisplay_courant les valeurs concernant le JDC courant
132 if len(self.liste_JDCDisplay) == 0 : return
133 #if self.JDCDisplay_courant : self.JDCDisplay_courant.jdc.unset_context()
134 numero_jdc = self.nb.index(self.nb.getcurselection())
135 self.JDCDisplay_courant = self.liste_JDCDisplay[numero_jdc]
136 self.JDC = self.JDCDisplay_courant.jdc
137 #self.JDC.set_context()
138 self.JDCName = self.JDC.nom
139 #print "selectJDC",numero_jdc,self.JDCDisplay_courant,self.JDCName
141 def newJDC_include(self,event=None):
143 Initialise un nouveau JDC vierge
145 import Extensions.jdc_include
146 JdC_aux=Extensions.jdc_include.JdC_include
148 self.appli.statusbar.reset_affichage_infos()
150 CONTEXT.unset_current_step()
151 J=JdC_aux(procedure="",appli=self.appli,
152 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
153 rep_mat=self.appli.CONFIGURATION.rep_mat,
158 self.ShowJDC(J,self.JDCName)
159 self.appli.toolbar.active_boutons()
161 def newJDC(self,event=None):
163 Initialise un nouveau JDC include vierge
165 self.appli.statusbar.reset_affichage_infos()
167 CONTEXT.unset_current_step()
168 J=self.cata[0].JdC(procedure="",appli=self.appli,
169 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
170 rep_mat=self.appli.CONFIGURATION.rep_mat,
175 self.ShowJDC(J,self.JDCName)
176 self.appli.toolbar.active_boutons()
178 def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
180 Lance l'affichage du JDC cad création du JDCDisplay
181 Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
182 bien un nouveau JDCDisplay et non si on remplace (renommage de l'onglet)
185 self.JDCName = self.JDC.nom = nom
186 if label_onglet == None :
187 # On veut un nouvel onglet
188 label_onglet = self.GetLabelJDC()
189 self.nb.add(label_onglet,tab_text = nom,tab_width=20)
193 self.JDCDisplay_courant=JDCDISPLAY(self.JDC,nom,appli=self.appli,parent=self.nb.page(label_onglet))
195 self.liste_JDCDisplay.append(self.JDCDisplay_courant)
196 self.JDCDisplay_courant.modified='n'
197 self.JDCDisplay_courant.fichier=self.fileName
198 self.nb.selectpage(label_onglet)
199 self.nb.setnaturalsize()
200 texte = "Jeu de commandes :" + self.JDCName+" ouvert"
201 CONNECTOR.Connect(JDC,"close",self.onClose,(self.JDCDisplay_courant,))
202 self.appli.affiche_infos(texte)
204 def onClose(self,jdcdisplay):
205 #print "onClose",jdcdisplay
206 CONNECTOR.Disconnect(jdcdisplay.jdc,"close",self.onClose,(jdcdisplay,))
207 self.closeJDCDISPLAY(jdcdisplay)
209 def closeJDCDISPLAY(self,jdc):
211 Ferme le jdcdisplay spécifié par l'argument jdc
213 if jdc is self.JDCDisplay_courant:
214 # on ferme le jdcdisplay courant
215 self.closeSelectedJDC()
217 # on ferme un autre jdcdisplay que le courant
218 old_JDCDisplay=self.JDCDisplay_courant
219 old_page=self.nb.getcurselection()
221 self.JDCDisplay_courant=jdc
223 numero_jdc=self.liste_JDCDisplay.index(jdc)
224 self.nb.selectpage(numero_jdc)
227 self.closeSelectedJDC()
228 self.JDCDisplay_courant=old_JDCDisplay
229 self.JDC=old_JDCDisplay.jdc
230 self.nb.selectpage(old_page)
232 def closeJDC (self,event=None) :
234 Ferme le JDC associé au JDCDISPLAY selectionné
236 if self.JDCDisplay_courant :
237 self.JDCDisplay_courant.jdc.close()
239 def closeSelectedJDC (self) :
241 Ferme le JDC courant et détruit l'onglet associé dans le notebook self.nb
243 if self.JDCDisplay_courant.modified == 'o' :
244 message = "Voulez-vous sauvegarder le jeu de commandes "+self.JDC.nom+" courant ?"
245 reponse = askyesno(title="Sauvegarde du jdc courant",
248 test = self.saveJDC()
250 self.appli.affiche_infos("Sauvegarde impossible")
252 self.JDCDisplay_courant.jdc.supprime()
253 self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
254 self.nb.delete(self.nb.getcurselection())
255 #XXX CCAR: pour le moment mis en commentaire
256 #self.JDC.unset_context()
259 index = self.nb.index(self.nb.getcurselection())
260 self.JDCDisplay_courant = self.liste_JDCDisplay[index]
261 self.JDC = self.JDCDisplay_courant.jdc
263 self.JDCDisplay_courant = None
264 self.appli.toolbar.inactive_boutons()
266 def visuCRJDC(self,event=None):
267 return self.visuCR(mode='JDC')
269 def visuCR(self,mode):
271 Méthode permettant l'affichage du rapport de validation
274 if not hasattr(self,'JDC') : return
275 titre="rapport de validation du jeu de commandes courant"
276 cr = self.JDC.report()
277 #self.update_jdc_courant()
279 from Noyau.N_CR import CR
281 cr.debut = "Début rapport de validation du catalogue"
282 cr.fin = "Fin rapport de validation du catalogue"
283 titre="rapport de validation du catalogue"
284 if hasattr(self,'cata_ordonne_cr') :
285 cr.add(self.cata_ordonne_cr)
286 if hasattr(self,'cata_dev_ordonne_cr') :
287 cr.add(self.cata_dev_ordonne_cr)
288 for cata in self.cata:
289 if hasattr(cata,'JdC'):
290 cr.add(cata.JdC.report())
292 self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
294 def openJDC(self,file=None,units=None):
296 Demande à l'utilisateur quel JDC existant il veut ouvrir
298 if self.code == 'ASTER':
299 filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*'))
300 elif self.code == 'HOMARD' :
301 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
303 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
304 if not hasattr(self,'initialdir'):
305 self.initialdir = self.appli.CONFIGURATION.initialdir
307 if file.__class__.__name__ in ('Event',):
311 file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
312 defaultextension=".comm",
313 filetypes = filetypes,
314 initialdir = self.initialdir)
317 e=extension_fichier(file)
318 self.JDCName=stripPath(file)
319 self.initialdir = os.path.dirname(os.path.abspath(file))
323 format=self.appli.format_fichier.get()
324 # Il faut convertir le contenu du fichier en fonction du format
325 if convert.plugins.has_key(format):
326 # Le convertisseur existe on l'utilise
327 p=convert.plugins[format]()
329 text=p.convert('exec',self.appli)
330 if not p.cr.estvide():
331 self.appli.affiche_infos("Erreur à la conversion")
333 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
334 texte = str(p.cr)).wait()
337 # Il n'existe pas c'est une erreur
338 self.appli.affiche_infos("Type de fichier non reconnu")
339 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
342 # On se met dans le repertoire ou se trouve le fichier de commandes
343 # pour trouver les eventuels fichiers include ou autres
344 # localises a cote du fichier de commandes
345 os.chdir(self.initialdir)
346 CONTEXT.unset_current_step()
347 J=self.cata[0].JdC(procedure=text,appli=self.appli,
348 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
350 rep_mat=self.appli.CONFIGURATION.rep_mat,
352 if units is not None:
353 J.recorded_units=units
354 J.old_recorded_units=units
357 txt_exception = J.cr.get_mess_exception()
359 # des exceptions ont été levées à la création du JDC
360 # --> on affiche les erreurs mais pas le JDC
362 self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
363 if self.appli.test == 0 :
364 showerror("Erreur fatale au chargement d'un fichier",txt_exception)
366 self.ShowJDC(J,self.JDCName)
367 self.appli.toolbar.active_boutons()
368 # si le JDC ne contient rien (vide), on retourne ici
369 if len(self.JDC.etapes) == 0 : return
370 # dans le cas où le JDC est invalide, on affiche son CR
371 if not self.JDC.isvalid():
372 self.appli.top.update()
373 self.visuCR(mode='JDC')
376 def GetLabelJDC(self,nb_jdc = 'absent'):
378 Retourne le label de l'onglet du NoteBook associé au JDC à afficher
380 if nb_jdc == 'absent':
381 nb_jdc = len(self.nb.pagenames())
383 label_onglet = 'JDC'+`nb_jdc`
384 if label_onglet not in self.nb.pagenames() :
387 return self.GetLabelJDC(nb_jdc)
389 def saveasJDC(self,event=None):
391 Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
392 donner le nom du fichier de sauvegarde
394 self.saveJDC(echo='oui')
396 def saveJDC(self,echo='non'):
398 Sauvegarde le JDC courant.
399 Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
400 Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
402 Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
404 if not hasattr(self,'JDC') : return 0
405 format=self.appli.format_fichier.get()
406 if generator.plugins.has_key(format):
407 # Le generateur existe on l'utilise
408 g=generator.plugins[format]()
409 jdc_formate=g.gener(self.JDC,format='beautifie')
410 if format == 'homard':
411 self.jdc_homard=g.get_homard()
412 if not g.cr.estvide():
413 self.appli.affiche_infos("Erreur à la generation")
414 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
417 # Il n'existe pas c'est une erreur
418 self.appli.affiche_infos("Format %s non reconnu" % format)
419 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC")
421 self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
423 if echo =='oui' or self.JDCDisplay_courant.fichier == None:
424 return self.asknomsauvegardeJDC()
425 elif self.JDCDisplay_courant.fichier != None :
427 # Pour sauvegarde dans l etude si lancement depuis salome
428 if self.appli.salome != 0:
430 self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
431 from panelsSalome import SALOME_UNIQUE_BASE_Panel
432 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
433 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
437 MyCLinit=eficasCL.CLinit()
442 #PN Fin Ajout --> Salome
443 # le JDC a déjà un nom : on sauvegarde directement sans demander
444 # un autre nom au développeur
445 if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini) :
446 showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
449 if self.appli.format_fichier.get() == 'homard':
450 self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
451 self.JDCDisplay_courant.stop_modif()
452 self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
455 def asknomsauvegardeJDC(self):
456 """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
457 titre = "Sauvegarde d'un fichier de commandes "+self.code
458 if self.code == 'ASTER':
460 filtyp = ( ("ASTER", ".comm"),)
463 filtyp = ( (self.code, ".py"),)
464 sauvegarde = asksaveasfilename(title=titre,
465 defaultextension=defext,
467 initialdir = self.appli.CONFIGURATION.initialdir)
468 #initialdir = self.appli.CONFIGURATION.rep_user)
470 # PN ajout --> Salome
471 # Pour sauvegarde dans l etude si lancement depuis salome
472 if self.appli.salome != 0:
474 self.appli.salome.rangeInStudy(sauvegarde)
475 from panelsSalome import SALOME_UNIQUE_BASE_Panel
476 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
477 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
481 MyCLinit=eficasCL.CLinit()
486 # PN fin ajout --> Salome
487 if not save_in_file(sauvegarde,self.jdc_fini) :
488 showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
491 if self.appli.format_fichier.get() == 'homard':
492 self.save_homard(sauvegarde,self.jdc_homard)
493 self.JDCDisplay_courant.stop_modif()
494 self.appli.affiche_infos("Sauvegarde effectuée")
495 if sauvegarde != self.JDCDisplay_courant.fichier :
496 # l'utilisateur a sauvegardé le JDC sous un autre nom
497 self.JDCDisplay_courant.fichier = sauvegarde
498 self.JDCName = self.JDC.nom = stripPath(sauvegarde)
500 CONNECTOR.Emit(self.JDC,"valid")
505 def changeNomPage(self):
506 """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
507 et recrée un autre onglet à la même place avec le bon nom
510 self.JDCDisplay_courant.jdc.nom = nom
511 nom_page = self.nb.getcurselection()
512 num_page = self.nb.index(nom_page)
513 tab = self.nb.tab(num_page)
514 tab.configure(text = nom)
516 def exitEFICAS(self,event=None):
518 Permet de sortir d'EFICAS en demandant à l'utilisateur
519 s'il veut sauvegarder les modifications en cours
521 liste = self.GetListeJDCaSauvegarder()
523 # Certains fichiers n'ont pas été sauvegardés ...
524 if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
525 test = self.saveall(liste)
528 if askyesno ("Quitter","Voulez-vous vraiment quitter l'application ?") :
529 for JDCDisplay in self.liste_JDCDisplay:
530 JDCDisplay.jdc.supprime()
534 def GetListeJDCaSauvegarder(self) :
535 """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
536 if not self.JDCDisplay_courant : return []
537 if len(self.liste_JDCDisplay) == 0 : return l
539 for JDCDisplay in self.liste_JDCDisplay:
540 if JDCDisplay.modified == 'o' :
544 def copy(self,event=None):
546 Lance la copie sur le JDC courant
548 if self.JDCDisplay_courant : self.JDCDisplay_courant.doCopy()
550 def paste(self,event=None):
552 Lance le collage sur le JDC courant
554 if self.JDCDisplay_courant : self.JDCDisplay_courant.doPaste()
556 def cut(self,event=None):
558 Lance le cut sur le JDC courant
560 if self.JDCDisplay_courant: self.JDCDisplay_courant.doCut()
564 Lance la suppression du noeud courant
566 if not self.JDCDisplay_courant : return
567 self.JDCDisplay_courant.init_modif()
568 self.JDCDisplay_courant.node_selected.delete()
570 def visuJDC_py(self,event=None):
572 Méthode permettant d'afficher dans une fenêtre à part l'écho au
573 format python du jdc courant
575 if not hasattr(self,'JDC') : return
576 jdc_fini = self.get_text_JDC('python')
577 if jdc_fini == None : return
579 titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
584 Méthode permettant d'afficher dans une fenêtre à part l'écho au
585 format .comm ou .py du jdc courant
587 if not hasattr(self,'JDC') : return
588 titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
589 format=self.appli.format_fichier.get()
590 self.jdc_fini = self.get_text_JDC(format)
591 if self.jdc_fini == None : return
592 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
594 def get_text_JDC(self,format):
595 if generator.plugins.has_key(format):
596 # Le generateur existe on l'utilise
597 g=generator.plugins[format]()
598 jdc_formate=g.gener(self.JDC,format='beautifie')
599 if not g.cr.estvide():
600 self.appli.affiche_infos("Erreur à la generation")
601 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
606 # Il n'existe pas c'est une erreur
607 self.appli.affiche_infos("Format %s non reconnu" % format)
608 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
613 Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
614 - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
615 - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
617 if not self.JDCDisplay_courant : return
619 cle_doc = self.JDCDisplay_courant.node_selected.item.get_docu()
620 if cle_doc == None : return
621 cle_doc = string.replace(cle_doc,'.','')
622 cle_doc = string.replace(cle_doc,'-','')
623 commande = self.appli.CONFIGURATION.exec_acrobat
624 nom_fichier = cle_doc+".pdf"
625 rep_fichier = cle_doc[0:2]
626 fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,rep_fichier,nom_fichier))
628 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
629 elif os.name == 'posix':
630 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
631 pid = os.system(script)
632 except AttributeError:
633 traceback.print_exc()
636 def visu_a_plat(self,event=None):
638 Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
640 if not hasattr(self,'JDC') : return
641 titre = 'fichier '+ self.JDCName + ' à plat '
642 self.jdc_fini = self.get_text_JDC('aplat')
643 if self.jdc_fini == None : return
644 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
646 def visu_txt_brut_JDC(self,event=None):
648 Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
650 if not hasattr(self,'JDC') : return
651 titre = "fichier de commandes utilisateur"
652 #texte = self.JDC.procedure
654 if self.JDCDisplay_courant.fichier == None:
655 self.appli.affiche_infos("Pas de fichier initial")
656 showerror("Impossible de visualiser le fichier initial",
657 "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
659 f=open(self.JDCDisplay_courant.fichier,'r')
662 self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte)
664 def affichage_fichier_ini(self):
666 Affichage des valeurs des paramètres relus par Eficas
668 self.appli.CONFIGURATION.affichage_fichier_ini()
670 def saveall(self,liste):
672 Sauvegarde tous les JDC contenus dans liste
675 for JDCDisplay in liste :
676 self.JDCDisplay_courant=JDCDisplay
677 self.JDC = JDCDisplay.jdc
678 test = test * self.saveJDC(echo = 'non')
681 def save_homard(self,nom,texte):
682 file_homard=nom+'.conf_homard'
684 f=open(file_homard,'w')
690 print "Pb a la sauvegarde sous le format homard"
691 if self.appli.salome != 0:
693 self.appli.salome.rangeInStudy(file_homard,"_CONF")
695 # ---------------------------------------------------------------------------
696 # Méthodes liées aux mots-clés inconnus
697 # ---------------------------------------------------------------------------
699 def mc_inconnus(self):
700 l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus()
701 o = fenetre_mc_inconnus(l_mc)
702 l = o.wait_new_list()
703 #print "mc_inconnus_new_list: ",l
704 #CCAR: Il n' y a pas de retour vers le JDC
706 def aideEFICAS(self,event=None):
707 AIDE.go(master=self.parent)
709 def update_jdc_courant(self):
710 self.JDCDisplay_courant.update()