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.unselect()
136 self.JDCDisplay_courant = self.liste_JDCDisplay[numero_jdc]
137 self.JDC = self.JDCDisplay_courant.jdc
138 self.JDCName = self.JDC.nom
139 self.JDCDisplay_courant.select()
140 #print "selectJDC",numero_jdc,self.JDCDisplay_courant,self.JDCName
142 def newJDC_include(self,event=None):
144 Initialise un nouveau JDC vierge
146 import Extensions.jdc_include
147 JdC_aux=Extensions.jdc_include.JdC_include
149 self.appli.statusbar.reset_affichage_infos()
151 CONTEXT.unset_current_step()
152 jaux=self.cata[0].JdC(procedure="",appli=self.appli,
153 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
154 rep_mat=self.appli.CONFIGURATION.rep_mat,
158 J=JdC_aux(procedure="",appli=self.appli,
159 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
161 rep_mat=self.appli.CONFIGURATION.rep_mat,
166 self.ShowJDC(J,self.JDCName)
167 self.appli.toolbar.active_boutons()
169 def newJDC(self,event=None):
171 Initialise un nouveau JDC include vierge
173 self.appli.statusbar.reset_affichage_infos()
175 CONTEXT.unset_current_step()
176 J=self.cata[0].JdC(procedure="",appli=self.appli,
177 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
178 rep_mat=self.appli.CONFIGURATION.rep_mat,
183 self.ShowJDC(J,self.JDCName)
184 self.appli.toolbar.active_boutons()
186 def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
188 Lance l'affichage du JDC cad création du JDCDisplay
189 Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
190 bien un nouveau JDCDisplay et non si on remplace (renommage de l'onglet)
193 self.JDCName = self.JDC.nom = nom
194 if label_onglet == None :
195 # On veut un nouvel onglet
196 label_onglet = self.GetLabelJDC()
197 self.nb.add(label_onglet,tab_text = nom,tab_width=20)
201 self.JDCDisplay_courant=JDCDISPLAY(self.JDC,nom,appli=self.appli,parent=self.nb.page(label_onglet))
203 self.liste_JDCDisplay.append(self.JDCDisplay_courant)
204 self.JDCDisplay_courant.modified='n'
205 self.JDCDisplay_courant.fichier=self.fileName
206 self.nb.selectpage(label_onglet)
207 self.nb.setnaturalsize()
208 texte = "Jeu de commandes :" + self.JDCName+" ouvert"
209 CONNECTOR.Connect(JDC,"close",self.onClose,(self.JDCDisplay_courant,))
210 self.appli.affiche_infos(texte)
212 def onClose(self,jdcdisplay):
213 #print "onClose",jdcdisplay
214 CONNECTOR.Disconnect(jdcdisplay.jdc,"close",self.onClose,(jdcdisplay,))
215 self.closeJDCDISPLAY(jdcdisplay)
217 def closeJDCDISPLAY(self,jdc):
219 Ferme le jdcdisplay spécifié par l'argument jdc
221 if jdc is self.JDCDisplay_courant:
222 # on ferme le jdcdisplay courant
223 self.closeSelectedJDC()
225 # on ferme un autre jdcdisplay que le courant
226 old_JDCDisplay=self.JDCDisplay_courant
227 old_page=self.nb.getcurselection()
229 self.JDCDisplay_courant=jdc
231 numero_jdc=self.liste_JDCDisplay.index(jdc)
232 self.nb.selectpage(numero_jdc)
235 self.closeSelectedJDC()
236 self.JDCDisplay_courant=old_JDCDisplay
237 self.JDC=old_JDCDisplay.jdc
238 self.nb.selectpage(old_page)
240 def closeJDC (self,event=None) :
242 Ferme le JDC associé au JDCDISPLAY selectionné
244 if self.JDCDisplay_courant :
245 self.JDCDisplay_courant.jdc.close()
247 def closeSelectedJDC (self) :
249 Ferme le JDC courant et détruit l'onglet associé dans le notebook self.nb
251 if self.JDCDisplay_courant.modified == 'o' :
252 message = "Voulez-vous sauvegarder le jeu de commandes "+self.JDC.nom+" courant ?"
253 reponse = askyesno(title="Sauvegarde du jdc courant",
256 test = self.saveJDC()
258 self.appli.affiche_infos("Sauvegarde impossible")
260 self.JDCDisplay_courant.jdc.supprime()
261 self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
262 self.nb.delete(self.nb.getcurselection())
263 #XXX CCAR: pour le moment mis en commentaire
264 #self.JDC.unset_context()
267 index = self.nb.index(self.nb.getcurselection())
268 self.JDCDisplay_courant = self.liste_JDCDisplay[index]
269 self.JDC = self.JDCDisplay_courant.jdc
271 self.JDCDisplay_courant = None
272 self.appli.toolbar.inactive_boutons()
274 def visuCRJDC(self,event=None):
275 return self.visuCR(mode='JDC')
277 def visuCR(self,mode):
279 Méthode permettant l'affichage du rapport de validation
282 if not hasattr(self,'JDC') : return
283 titre="rapport de validation du jeu de commandes courant"
284 cr = self.JDC.report()
285 #self.update_jdc_courant()
287 from Noyau.N_CR import CR
289 cr.debut = "Début rapport de validation du catalogue"
290 cr.fin = "Fin rapport de validation du catalogue"
291 titre="rapport de validation du catalogue"
292 if hasattr(self,'cata_ordonne_cr') :
293 cr.add(self.cata_ordonne_cr)
294 if hasattr(self,'cata_dev_ordonne_cr') :
295 cr.add(self.cata_dev_ordonne_cr)
296 for cata in self.cata:
297 if hasattr(cata,'JdC'):
298 cr.add(cata.JdC.report())
300 self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
302 def openJDC(self,event=None,file=None,units=None):
304 Demande à l'utilisateur quel JDC existant il veut ouvrir
306 if self.code == 'ASTER':
307 filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*'))
308 elif self.code == 'HOMARD' :
309 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
311 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
312 if not hasattr(self,'initialdir'):
313 self.initialdir = self.appli.CONFIGURATION.initialdir
316 file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
317 defaultextension=".comm",
318 filetypes = filetypes,
319 initialdir = self.initialdir)
322 e=extension_fichier(file)
323 self.JDCName=stripPath(file)
324 self.initialdir = os.path.dirname(os.path.abspath(file))
328 format=self.appli.format_fichier.get()
329 # Il faut convertir le contenu du fichier en fonction du format
330 if convert.plugins.has_key(format):
331 # Le convertisseur existe on l'utilise
332 p=convert.plugins[format]()
334 text=p.convert('exec',self.appli)
335 if not p.cr.estvide():
336 self.appli.affiche_infos("Erreur à la conversion")
338 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
339 texte = str(p.cr)).wait()
342 # Il n'existe pas c'est une erreur
343 self.appli.affiche_infos("Type de fichier non reconnu")
344 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
347 # On se met dans le repertoire ou se trouve le fichier de commandes
348 # pour trouver les eventuels fichiers include ou autres
349 # localises a cote du fichier de commandes
350 os.chdir(self.initialdir)
351 CONTEXT.unset_current_step()
352 J=self.cata[0].JdC(procedure=text,appli=self.appli,
353 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
355 rep_mat=self.appli.CONFIGURATION.rep_mat,
357 if units is not None:
358 J.recorded_units=units
359 J.old_recorded_units=units
362 txt_exception = J.cr.get_mess_exception()
364 # des exceptions ont été levées à la création du JDC
365 # --> on affiche les erreurs mais pas le JDC
367 self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
368 if self.appli.test == 0 :
369 showerror("Erreur fatale au chargement d'un fichier",txt_exception)
371 self.ShowJDC(J,self.JDCName)
372 self.appli.toolbar.active_boutons()
373 # si le JDC ne contient rien (vide), on retourne ici
374 if len(self.JDC.etapes) == 0 : return
375 # dans le cas où le JDC est invalide, on affiche son CR
376 if not self.JDC.isvalid():
377 self.appli.top.update()
378 self.visuCR(mode='JDC')
380 def GetLabelJDC(self,nb_jdc = 'absent'):
382 Retourne le label de l'onglet du NoteBook associé au JDC à afficher
384 if nb_jdc == 'absent':
385 nb_jdc = len(self.nb.pagenames())
387 label_onglet = 'JDC'+`nb_jdc`
388 if label_onglet not in self.nb.pagenames() :
391 return self.GetLabelJDC(nb_jdc)
393 def saveasJDC(self,event=None):
395 Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
396 donner le nom du fichier de sauvegarde
398 self.saveJDC(echo='oui')
400 def saveJDC(self,echo='non'):
402 Sauvegarde le JDC courant.
403 Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
404 Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
406 Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
408 if not hasattr(self,'JDC') : return 0
409 format=self.appli.format_fichier.get()
410 if generator.plugins.has_key(format):
411 # Le generateur existe on l'utilise
412 g=generator.plugins[format]()
413 jdc_formate=g.gener(self.JDC,format='beautifie')
414 if format == 'homard':
415 self.jdc_homard=g.get_homard()
416 if not g.cr.estvide():
417 self.appli.affiche_infos("Erreur à la generation")
418 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
421 # Il n'existe pas c'est une erreur
422 self.appli.affiche_infos("Format %s non reconnu" % format)
423 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC")
425 self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
427 if echo =='oui' or self.JDCDisplay_courant.fichier == None:
428 return self.asknomsauvegardeJDC()
429 elif self.JDCDisplay_courant.fichier != None :
431 # Pour sauvegarde dans l etude si lancement depuis salome
432 if self.appli.salome != 0:
434 self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
435 from panelsSalome import SALOME_UNIQUE_BASE_Panel
436 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
437 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
441 MyCLinit=eficasCL.CLinit()
446 #PN Fin Ajout --> Salome
447 # le JDC a déjà un nom : on sauvegarde directement sans demander
448 # un autre nom au développeur
449 if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini) :
450 showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
453 if self.appli.format_fichier.get() == 'homard':
454 self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
455 self.JDCDisplay_courant.stop_modif()
456 self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
459 def asknomsauvegardeJDC(self):
460 """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
461 titre = "Sauvegarde d'un fichier de commandes "+self.code
462 if self.code == 'ASTER':
464 filtyp = ( ("ASTER", ".comm"),)
467 filtyp = ( (self.code, ".py"),)
468 sauvegarde = asksaveasfilename(title=titre,
469 defaultextension=defext,
471 initialdir = self.appli.CONFIGURATION.initialdir)
472 #initialdir = self.appli.CONFIGURATION.rep_user)
474 # PN ajout --> Salome
475 # Pour sauvegarde dans l etude si lancement depuis salome
476 if self.appli.salome != 0:
478 self.appli.salome.rangeInStudy(sauvegarde)
479 from panelsSalome import SALOME_UNIQUE_BASE_Panel
480 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
481 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
485 MyCLinit=eficasCL.CLinit()
490 # PN fin ajout --> Salome
491 if not save_in_file(sauvegarde,self.jdc_fini) :
492 showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
495 if self.appli.format_fichier.get() == 'homard':
496 self.save_homard(sauvegarde,self.jdc_homard)
497 self.JDCDisplay_courant.stop_modif()
498 self.appli.affiche_infos("Sauvegarde effectuée")
499 if sauvegarde != self.JDCDisplay_courant.fichier :
500 # l'utilisateur a sauvegardé le JDC sous un autre nom
501 self.JDCDisplay_courant.fichier = sauvegarde
502 self.JDCName = self.JDC.nom = stripPath(sauvegarde)
503 self.JDC.changefichier(sauvegarde)
509 def changeNomPage(self):
510 """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
511 et recrée un autre onglet à la même place avec le bon nom
514 self.JDCDisplay_courant.jdc.nom = nom
515 nom_page = self.nb.getcurselection()
516 num_page = self.nb.index(nom_page)
517 tab = self.nb.tab(num_page)
518 tab.configure(text = nom)
520 def exitEFICAS(self,event=None):
522 Permet de sortir d'EFICAS en demandant à l'utilisateur
523 s'il veut sauvegarder les modifications en cours
525 liste = self.GetListeJDCaSauvegarder()
527 # Certains fichiers n'ont pas été sauvegardés ...
528 if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
529 test = self.saveall(liste)
532 if askyesno ("Quitter","Voulez-vous vraiment quitter l'application ?") :
533 for JDCDisplay in self.liste_JDCDisplay:
534 JDCDisplay.jdc.supprime()
538 def GetListeJDCaSauvegarder(self) :
539 """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
540 if not self.JDCDisplay_courant : return []
541 if len(self.liste_JDCDisplay) == 0 : return l
543 for JDCDisplay in self.liste_JDCDisplay:
544 if JDCDisplay.modified == 'o' :
548 def copy(self,event=None):
550 Lance la copie sur le JDC courant
552 if self.JDCDisplay_courant : self.JDCDisplay_courant.doCopy()
554 def paste(self,event=None):
556 Lance le collage sur le JDC courant
558 if self.JDCDisplay_courant : self.JDCDisplay_courant.doPaste()
560 def cut(self,event=None):
562 Lance le cut sur le JDC courant
564 if self.JDCDisplay_courant: self.JDCDisplay_courant.doCut()
568 Lance la suppression du noeud courant
570 if not self.JDCDisplay_courant : return
571 self.JDCDisplay_courant.init_modif()
572 self.JDCDisplay_courant.node_selected.delete()
574 def visuJDC_py(self,event=None):
576 Méthode permettant d'afficher dans une fenêtre à part l'écho au
577 format python du jdc courant
579 if not hasattr(self,'JDC') : return
580 jdc_fini = self.get_text_JDC('python')
581 if jdc_fini == None : return
583 titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
588 Méthode permettant d'afficher dans une fenêtre à part l'écho au
589 format .comm ou .py du jdc courant
591 if not hasattr(self,'JDC') : return
592 titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
593 format=self.appli.format_fichier.get()
594 self.jdc_fini = self.get_text_JDC(format)
595 if self.jdc_fini == None : return
596 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
598 def get_text_JDC(self,format):
599 if generator.plugins.has_key(format):
600 # Le generateur existe on l'utilise
601 g=generator.plugins[format]()
602 jdc_formate=g.gener(self.JDC,format='beautifie')
603 if not g.cr.estvide():
604 self.appli.affiche_infos("Erreur à la generation")
605 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
610 # Il n'existe pas c'est une erreur
611 self.appli.affiche_infos("Format %s non reconnu" % format)
612 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
617 Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
618 - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
619 - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
621 if not self.JDCDisplay_courant : return
623 cle_doc = self.JDCDisplay_courant.node_selected.item.get_docu()
624 if cle_doc == None : return
625 cle_doc = string.replace(cle_doc,'.','')
626 cle_doc = string.replace(cle_doc,'-','')
627 commande = self.appli.CONFIGURATION.exec_acrobat
628 nom_fichier = cle_doc+".pdf"
629 rep_fichier = cle_doc[0:2]
630 fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,rep_fichier,nom_fichier))
632 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
633 elif os.name == 'posix':
634 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
635 pid = os.system(script)
636 except AttributeError:
637 traceback.print_exc()
640 def visu_a_plat(self,event=None):
642 Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
644 if not hasattr(self,'JDC') : return
645 titre = 'fichier '+ self.JDCName + ' à plat '
646 self.jdc_fini = self.get_text_JDC('aplat')
647 if self.jdc_fini == None : return
648 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
650 def visu_txt_brut_JDC(self,event=None):
652 Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
654 if not hasattr(self,'JDC') : return
655 titre = "fichier de commandes utilisateur"
656 #texte = self.JDC.procedure
658 if self.JDCDisplay_courant.fichier == None:
659 self.appli.affiche_infos("Pas de fichier initial")
660 showerror("Impossible de visualiser le fichier initial",
661 "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
663 f=open(self.JDCDisplay_courant.fichier,'r')
666 self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte)
668 def affichage_fichier_ini(self):
670 Affichage des valeurs des paramètres relus par Eficas
672 self.appli.CONFIGURATION.affichage_fichier_ini()
674 def saveall(self,liste):
676 Sauvegarde tous les JDC contenus dans liste
679 for JDCDisplay in liste :
680 self.JDCDisplay_courant=JDCDisplay
681 self.JDC = JDCDisplay.jdc
682 test = test * self.saveJDC(echo = 'non')
685 def save_homard(self,nom,texte):
686 file_homard=nom+'.conf_homard'
688 f=open(file_homard,'w')
694 print "Pb a la sauvegarde sous le format homard"
695 if self.appli.salome != 0:
697 self.appli.salome.rangeInStudy(file_homard,"_CONF")
699 # ---------------------------------------------------------------------------
700 # Méthodes liées aux mots-clés inconnus
701 # ---------------------------------------------------------------------------
703 def mc_inconnus(self):
704 l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus()
705 o = fenetre_mc_inconnus(l_mc)
706 l = o.wait_new_list()
707 #print "mc_inconnus_new_list: ",l
708 #CCAR: Il n' y a pas de retour vers le JDC
710 def aideEFICAS(self,event=None):
711 AIDE.go(master=self.parent)
713 def update_jdc_courant(self):
714 self.JDCDisplay_courant.update()