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 ('Fermer24',"closeJDC","Fermeture du fichier courant",'always'),
82 ('Zoom24',"visuJDC","Visualisation du fichier de commandes",'always'),
84 ('Copy24',"copy","Copie l'objet courant",'jdc'),
85 ('Cut24',"cut","Coupe l'objet courant",'jdc'),
86 ('Paste24',"paste","Colle l'objet copié après l'objet courant",'jdc'),
88 ('Delete24',"delete","Supprime l'objet courant",'jdc'),
89 ('Help24',"view_doc","Documentation de l'objet courant",'jdc')
92 menu_defs=prefs.menu_defs['bureau']
96 button_defs=prefs.button_defs['bureau']
100 def __init__(self,appli,parent):
103 if self.appli.test == 0 :
104 splash._splash.configure(text = "Création du bureau")
105 self.nb = Pmw.NoteBook(self.parent,raisecommand=self.selectJDC)
106 self.nb.pack(fill='both',expand=1)
107 self.JDCDisplay_courant=None
109 self.liste_JDCDisplay=[]
110 comploader.charger_composants()
114 def cree_cataitem(self):
116 On récupère dans l'appli_composant readercata les variables
117 qui servent par la suite pour la création des JDC
119 self.cataitem=self.appli.readercata.cataitem
120 self.cata=self.appli.readercata.cata
121 self.cata_ordonne_dico=self.appli.readercata.cata_ordonne_dico
122 self.code=self.appli.readercata.code
123 self.version_code=self.appli.readercata.version_code
124 self.fic_cata=self.appli.readercata.fic_cata
126 def selectJDC(self,event=None):
128 Cette méthode est appelée chaque fois que l'on sélectionne
129 l'onglet d'un JDC dans le NoteBook des JDC.
130 Elle permet de stocker dans les variable self.JDC et
131 self.JDCDisplay_courant les valeurs concernant le JDC courant
133 if len(self.liste_JDCDisplay) == 0 : return
134 #if self.JDCDisplay_courant : self.JDCDisplay_courant.jdc.unset_context()
135 numero_jdc = self.nb.index(self.nb.getcurselection())
136 self.JDCDisplay_courant.unselect()
137 self.JDCDisplay_courant = self.liste_JDCDisplay[numero_jdc]
138 self.JDC = self.JDCDisplay_courant.jdc
139 self.JDCName = self.JDC.nom
140 self.JDCDisplay_courant.select()
141 #print "selectJDC",numero_jdc,self.JDCDisplay_courant,self.JDCName
143 def newJDC_include(self,event=None):
145 Initialise un nouveau JDC vierge
147 import Extensions.jdc_include
148 JdC_aux=Extensions.jdc_include.JdC_include
150 self.appli.statusbar.reset_affichage_infos()
152 CONTEXT.unset_current_step()
153 jaux=self.cata[0].JdC(procedure="",appli=self.appli,
154 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
155 rep_mat=self.appli.CONFIGURATION.rep_mat,
159 J=JdC_aux(procedure="",appli=self.appli,
160 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
162 rep_mat=self.appli.CONFIGURATION.rep_mat,
167 self.ShowJDC(J,self.JDCName)
168 self.appli.toolbar.active_boutons()
170 def newJDC(self,event=None):
172 Initialise un nouveau JDC include vierge
174 self.appli.statusbar.reset_affichage_infos()
176 CONTEXT.unset_current_step()
177 J=self.cata[0].JdC(procedure="",appli=self.appli,
178 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
179 rep_mat=self.appli.CONFIGURATION.rep_mat,
184 self.ShowJDC(J,self.JDCName)
185 self.appli.toolbar.active_boutons()
187 def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
189 Lance l'affichage du JDC cad création du JDCDisplay
190 Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
191 bien un nouveau JDCDisplay et non si on remplace (renommage de l'onglet)
194 self.JDCName = self.JDC.nom = nom
195 if label_onglet == None :
196 # On veut un nouvel onglet
197 label_onglet = self.GetLabelJDC()
198 self.nb.add(label_onglet,tab_text = nom,tab_width=20)
202 self.JDCDisplay_courant=JDCDISPLAY(self.JDC,nom,appli=self.appli,parent=self.nb.page(label_onglet))
204 self.liste_JDCDisplay.append(self.JDCDisplay_courant)
205 self.JDCDisplay_courant.modified='n'
206 self.JDCDisplay_courant.fichier=self.fileName
207 self.nb.selectpage(label_onglet)
208 self.nb.setnaturalsize()
209 texte = "Jeu de commandes :" + self.JDCName+" ouvert"
210 CONNECTOR.Connect(JDC,"close",self.onClose,(self.JDCDisplay_courant,))
211 self.appli.affiche_infos(texte)
213 def onClose(self,jdcdisplay):
214 #print "onClose",jdcdisplay
215 CONNECTOR.Disconnect(jdcdisplay.jdc,"close",self.onClose,(jdcdisplay,))
216 self.closeJDCDISPLAY(jdcdisplay)
218 def closeJDCDISPLAY(self,jdc):
220 Ferme le jdcdisplay spécifié par l'argument jdc
222 if jdc is self.JDCDisplay_courant:
223 # on ferme le jdcdisplay courant
224 self.closeSelectedJDC()
226 # on ferme un autre jdcdisplay que le courant
227 old_JDCDisplay=self.JDCDisplay_courant
228 old_page=self.nb.getcurselection()
230 self.JDCDisplay_courant=jdc
232 numero_jdc=self.liste_JDCDisplay.index(jdc)
233 self.nb.selectpage(numero_jdc)
236 self.closeSelectedJDC()
237 self.JDCDisplay_courant=old_JDCDisplay
238 self.JDC=old_JDCDisplay.jdc
239 self.nb.selectpage(old_page)
241 def closeJDC (self,event=None) :
243 Ferme le JDC associé au JDCDISPLAY selectionné
245 if self.JDCDisplay_courant :
246 self.JDCDisplay_courant.jdc.close()
248 def closeSelectedJDC (self) :
250 Ferme le JDC courant et détruit l'onglet associé dans le notebook self.nb
252 if self.JDCDisplay_courant.modified == 'o' :
253 message = "Voulez-vous sauvegarder le jeu de commandes "+self.JDC.nom+" courant ?"
254 reponse = askyesno(title="Sauvegarde du jdc courant",
257 test = self.saveJDC()
259 self.appli.affiche_infos("Sauvegarde impossible")
261 self.JDCDisplay_courant.jdc.supprime()
262 self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
263 self.nb.delete(self.nb.getcurselection())
264 #XXX CCAR: pour le moment mis en commentaire
265 #self.JDC.unset_context()
268 index = self.nb.index(self.nb.getcurselection())
269 self.JDCDisplay_courant = self.liste_JDCDisplay[index]
270 self.JDC = self.JDCDisplay_courant.jdc
272 self.JDCDisplay_courant = None
273 self.appli.toolbar.inactive_boutons()
275 def visuCRJDC(self,event=None):
276 return self.visuCR(mode='JDC')
278 def visuCR(self,mode):
280 Méthode permettant l'affichage du rapport de validation
283 if not hasattr(self,'JDC') : return
284 titre="rapport de validation du jeu de commandes courant"
285 cr = self.JDC.report()
286 #self.update_jdc_courant()
288 from Noyau.N_CR import CR
290 cr.debut = "Début rapport de validation du catalogue"
291 cr.fin = "Fin rapport de validation du catalogue"
292 titre="rapport de validation du catalogue"
293 if hasattr(self,'cata_ordonne_cr') :
294 cr.add(self.cata_ordonne_cr)
295 if hasattr(self,'cata_dev_ordonne_cr') :
296 cr.add(self.cata_dev_ordonne_cr)
297 for cata in self.cata:
298 if hasattr(cata,'JdC'):
299 cr.add(cata.JdC.report())
301 self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
303 def openJDC(self,event=None,file=None,units=None):
305 Demande à l'utilisateur quel JDC existant il veut ouvrir
307 if self.code == 'ASTER':
308 filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*'))
309 elif self.code == 'HOMARD' :
310 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
312 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
313 if not hasattr(self,'initialdir'):
314 self.initialdir = self.appli.CONFIGURATION.initialdir
317 file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
318 defaultextension=".comm",
319 filetypes = filetypes,
320 initialdir = self.initialdir)
323 e=extension_fichier(file)
324 self.JDCName=stripPath(file)
325 self.initialdir = os.path.dirname(os.path.abspath(file))
329 format=self.appli.format_fichier.get()
330 # Il faut convertir le contenu du fichier en fonction du format
331 if convert.plugins.has_key(format):
332 # Le convertisseur existe on l'utilise
333 p=convert.plugins[format]()
335 text=p.convert('exec',self.appli)
336 if not p.cr.estvide():
337 self.appli.affiche_infos("Erreur à la conversion")
339 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
340 texte = str(p.cr)).wait()
343 # Il n'existe pas c'est une erreur
344 self.appli.affiche_infos("Type de fichier non reconnu")
345 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
348 # On se met dans le repertoire ou se trouve le fichier de commandes
349 # pour trouver les eventuels fichiers include ou autres
350 # localises a cote du fichier de commandes
351 os.chdir(self.initialdir)
352 CONTEXT.unset_current_step()
353 J=self.cata[0].JdC(procedure=text,appli=self.appli,
354 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
356 rep_mat=self.appli.CONFIGURATION.rep_mat,
358 if units is not None:
359 J.recorded_units=units
360 J.old_recorded_units=units
363 txt_exception = J.cr.get_mess_exception()
365 # des exceptions ont été levées à la création du JDC
366 # --> on affiche les erreurs mais pas le JDC
368 self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
369 if self.appli.test == 0 :
370 showerror("Erreur fatale au chargement d'un fichier",txt_exception)
372 self.ShowJDC(J,self.JDCName)
373 self.appli.toolbar.active_boutons()
374 # si le JDC ne contient rien (vide), on retourne ici
375 if len(self.JDC.etapes) == 0 : return
376 # dans le cas où le JDC est invalide, on affiche son CR
377 if not self.JDC.isvalid():
378 self.appli.top.update()
379 self.visuCR(mode='JDC')
381 def GetLabelJDC(self,nb_jdc = 'absent'):
383 Retourne le label de l'onglet du NoteBook associé au JDC à afficher
385 if nb_jdc == 'absent':
386 nb_jdc = len(self.nb.pagenames())
388 label_onglet = 'JDC'+`nb_jdc`
389 if label_onglet not in self.nb.pagenames() :
392 return self.GetLabelJDC(nb_jdc)
394 def saveasJDC(self,event=None):
396 Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
397 donner le nom du fichier de sauvegarde
399 self.saveJDC(echo='oui')
401 def saveJDC(self,echo='non'):
403 Sauvegarde le JDC courant.
404 Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
405 Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
407 Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
409 if not hasattr(self,'JDC') : return 0
410 format=self.appli.format_fichier.get()
411 if generator.plugins.has_key(format):
412 # Le generateur existe on l'utilise
413 g=generator.plugins[format]()
414 jdc_formate=g.gener(self.JDC,format='beautifie')
415 if format == 'homard':
416 self.jdc_homard=g.get_homard()
417 if not g.cr.estvide():
418 self.appli.affiche_infos("Erreur à la generation")
419 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
422 # Il n'existe pas c'est une erreur
423 self.appli.affiche_infos("Format %s non reconnu" % format)
424 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC")
426 self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
428 if echo =='oui' or self.JDCDisplay_courant.fichier == None:
429 return self.asknomsauvegardeJDC()
430 elif self.JDCDisplay_courant.fichier != None :
432 # Pour sauvegarde dans l etude si lancement depuis salome
433 if self.appli.salome != 0:
435 self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
436 from panelsSalome import SALOME_UNIQUE_BASE_Panel
437 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
438 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
442 MyCLinit=eficasCL.CLinit()
448 #PN Fin Ajout --> Salome
449 # le JDC a déjà un nom : on sauvegarde directement sans demander
450 # un autre nom au développeur
451 if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
452 showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
455 if self.appli.format_fichier.get() == 'homard':
456 self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
457 self.JDCDisplay_courant.stop_modif()
458 self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
461 def asknomsauvegardeJDC(self):
462 """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
463 titre = "Sauvegarde d'un fichier de commandes "+self.code
464 if self.code == 'ASTER':
466 filtyp = ( ("ASTER", ".comm"),)
469 filtyp = ( (self.code, ".py"),)
470 sauvegarde = asksaveasfilename(title=titre,
471 defaultextension=defext,
473 initialdir = self.appli.CONFIGURATION.initialdir)
474 #initialdir = self.appli.CONFIGURATION.rep_user)
476 # PN ajout --> Salome
477 # Pour sauvegarde dans l etude si lancement depuis salome
478 if self.appli.salome != 0:
480 self.appli.salome.rangeInStudy(sauvegarde)
481 from panelsSalome import SALOME_UNIQUE_BASE_Panel
482 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
483 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
487 MyCLinit=eficasCL.CLinit()
493 # PN fin ajout --> Salome
494 if not save_in_file(sauvegarde,self.jdc_fini,None) :
495 showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
498 if self.appli.format_fichier.get() == 'homard':
499 self.save_homard(sauvegarde,self.jdc_homard)
500 self.JDCDisplay_courant.stop_modif()
501 self.appli.affiche_infos("Sauvegarde effectuée")
502 if sauvegarde != self.JDCDisplay_courant.fichier :
503 # l'utilisateur a sauvegardé le JDC sous un autre nom
504 self.JDCDisplay_courant.fichier = sauvegarde
505 self.JDCName = self.JDC.nom = stripPath(sauvegarde)
506 self.JDC.changefichier(sauvegarde)
512 def changeNomPage(self):
513 """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
514 et recrée un autre onglet à la même place avec le bon nom
517 self.JDCDisplay_courant.jdc.nom = nom
518 nom_page = self.nb.getcurselection()
519 num_page = self.nb.index(nom_page)
520 tab = self.nb.tab(num_page)
521 tab.configure(text = nom)
523 def exitEFICAS(self,event=None):
525 Permet de sortir d'EFICAS en demandant à l'utilisateur
526 s'il veut sauvegarder les modifications en cours
528 liste = self.GetListeJDCaSauvegarder()
530 # Certains fichiers n'ont pas été sauvegardés ...
531 if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
532 test = self.saveall(liste)
535 if askyesno ("Quitter","Voulez-vous vraiment quitter l'application ?") :
536 for JDCDisplay in self.liste_JDCDisplay:
537 JDCDisplay.jdc.supprime()
541 def GetListeJDCaSauvegarder(self) :
542 """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
543 if not self.JDCDisplay_courant : return []
544 if len(self.liste_JDCDisplay) == 0 : return l
546 for JDCDisplay in self.liste_JDCDisplay:
547 if JDCDisplay.modified == 'o' :
551 def copy(self,event=None):
553 Lance la copie sur le JDC courant
555 if self.JDCDisplay_courant : self.JDCDisplay_courant.doCopy()
557 def paste(self,event=None):
559 Lance le collage sur le JDC courant
561 if self.JDCDisplay_courant : self.JDCDisplay_courant.doPaste()
563 def cut(self,event=None):
565 Lance le cut sur le JDC courant
567 if self.JDCDisplay_courant: self.JDCDisplay_courant.doCut()
571 Lance la suppression du noeud courant
573 if not self.JDCDisplay_courant : return
574 self.JDCDisplay_courant.init_modif()
575 self.JDCDisplay_courant.node_selected.delete()
577 def visuJDC_py(self,event=None):
579 Méthode permettant d'afficher dans une fenêtre à part l'écho au
580 format python du jdc courant
582 if not hasattr(self,'JDC') : return
583 jdc_fini = self.get_text_JDC('python')
584 if jdc_fini == None : return
586 titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
591 Méthode permettant d'afficher dans une fenêtre à part l'écho au
592 format .comm ou .py du jdc courant
594 if not hasattr(self,'JDC') : return
595 titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
596 format=self.appli.format_fichier.get()
597 self.jdc_fini = self.get_text_JDC(format)
598 if self.jdc_fini == None : return
599 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
601 def get_text_JDC(self,format):
602 if generator.plugins.has_key(format):
603 # Le generateur existe on l'utilise
604 g=generator.plugins[format]()
605 jdc_formate=g.gener(self.JDC,format='beautifie')
606 if not g.cr.estvide():
607 self.appli.affiche_infos("Erreur à la generation")
608 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
613 # Il n'existe pas c'est une erreur
614 self.appli.affiche_infos("Format %s non reconnu" % format)
615 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
620 Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
621 - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
622 - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
624 if not self.JDCDisplay_courant : return
626 cle_doc = self.JDCDisplay_courant.node_selected.item.get_docu()
627 if cle_doc == None : return
628 cle_doc = string.replace(cle_doc,'.','')
629 cle_doc = string.replace(cle_doc,'-','')
630 commande = self.appli.CONFIGURATION.exec_acrobat
631 nom_fichier = cle_doc+".pdf"
632 fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,nom_fichier))
634 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
635 elif os.name == 'posix':
636 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
637 pid = os.system(script)
638 except AttributeError:
639 traceback.print_exc()
642 def visu_a_plat(self,event=None):
644 Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
646 if not hasattr(self,'JDC') : return
647 titre = 'fichier '+ self.JDCName + ' à plat '
648 self.jdc_fini = self.get_text_JDC('aplat')
649 if self.jdc_fini == None : return
650 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
652 def visu_txt_brut_JDC(self,event=None):
654 Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
656 if not hasattr(self,'JDC') : return
657 titre = "fichier de commandes utilisateur"
658 #texte = self.JDC.procedure
660 if self.JDCDisplay_courant.fichier == None:
661 self.appli.affiche_infos("Pas de fichier initial")
662 showerror("Impossible de visualiser le fichier initial",
663 "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
665 f=open(self.JDCDisplay_courant.fichier,'r')
668 self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte)
670 def affichage_fichier_ini(self):
672 Affichage des valeurs des paramètres relus par Eficas
674 self.appli.CONFIGURATION.affichage_fichier_ini()
676 def saveall(self,liste):
678 Sauvegarde tous les JDC contenus dans liste
681 for JDCDisplay in liste :
682 self.JDCDisplay_courant=JDCDisplay
683 self.JDC = JDCDisplay.jdc
684 test = test * self.saveJDC(echo = 'non')
687 def save_homard(self,nom,texte):
688 file_homard=nom+'.conf_homard'
690 f=open(file_homard,'w')
696 print "Pb a la sauvegarde sous le format homard"
697 if self.appli.salome != 0:
699 self.appli.salome.rangeInStudy(file_homard,"_CONF")
701 # ---------------------------------------------------------------------------
702 # Méthodes liées aux mots-clés inconnus
703 # ---------------------------------------------------------------------------
705 def mc_inconnus(self):
706 l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus()
707 o = fenetre_mc_inconnus(l_mc)
708 l = o.wait_new_list()
709 #print "mc_inconnus_new_list: ",l
710 #CCAR: Il n' y a pas de retour vers le JDC
712 def aideEFICAS(self,event=None):
713 AIDE.go(master=self.parent)
715 def update_jdc_courant(self):
716 self.JDCDisplay_courant.update()