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(self,event=None):
143 Initialise un nouveau JDC vierge
145 self.appli.statusbar.reset_affichage_infos()
147 CONTEXT.unset_current_step()
148 J=self.cata[0].JdC(procedure="",appli=self.appli,
149 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
150 rep_mat=self.appli.CONFIGURATION.rep_mat,
155 self.ShowJDC(J,self.JDCName)
156 self.appli.toolbar.active_boutons()
158 def ShowJDC(self,JDC,nom,label_onglet=None,JDCDISPLAY=JDCDISPLAY):
160 Lance l'affichage du JDC cad création du JDCDisplay
161 Rajoute le JDCDisplay à la liste des JDCDisplay si label_onglet == None cad si on crée
162 bien un nouveau JDCDisplay et non si on remplace (renommage de l'onglet)
165 self.JDCName = self.JDC.nom = nom
166 if label_onglet == None :
167 # On veut un nouvel onglet
168 label_onglet = self.GetLabelJDC()
169 self.nb.add(label_onglet,tab_text = nom,tab_width=20)
173 self.JDCDisplay_courant=JDCDISPLAY(self.JDC,nom,appli=self.appli,parent=self.nb.page(label_onglet))
175 self.liste_JDCDisplay.append(self.JDCDisplay_courant)
176 self.JDCDisplay_courant.modified='n'
177 self.JDCDisplay_courant.fichier=self.fileName
178 self.nb.selectpage(label_onglet)
179 self.nb.setnaturalsize()
180 texte = "Jeu de commandes :" + self.JDCName+" ouvert"
181 CONNECTOR.Connect(JDC,"close",self.onClose,(self.JDCDisplay_courant,))
182 self.appli.affiche_infos(texte)
184 def onClose(self,jdcdisplay):
185 #print "onClose",jdcdisplay
186 CONNECTOR.Disconnect(jdcdisplay.jdc,"close",self.onClose,(jdcdisplay,))
187 self.closeJDCDISPLAY(jdcdisplay)
189 def closeJDCDISPLAY(self,jdc):
191 Ferme le jdcdisplay spécifié par l'argument jdc
193 if jdc is self.JDCDisplay_courant:
194 # on ferme le jdcdisplay courant
195 self.closeSelectedJDC()
197 # on ferme un autre jdcdisplay que le courant
198 old_JDCDisplay=self.JDCDisplay_courant
199 old_page=self.nb.getcurselection()
201 self.JDCDisplay_courant=jdc
203 numero_jdc=self.liste_JDCDisplay.index(jdc)
204 self.nb.selectpage(numero_jdc)
207 self.closeSelectedJDC()
208 self.JDCDisplay_courant=old_JDCDisplay
209 self.JDC=old_JDCDisplay.jdc
210 self.nb.selectpage(old_page)
212 def closeJDC (self,event=None) :
214 Ferme le JDC associé au JDCDISPLAY selectionné
216 if self.JDCDisplay_courant :
217 self.JDCDisplay_courant.jdc.close()
219 def closeSelectedJDC (self) :
221 Ferme le JDC courant et détruit l'onglet associé dans le notebook self.nb
223 if self.JDCDisplay_courant.modified == 'o' :
224 message = "Voulez-vous sauvegarder le jeu de commandes "+self.JDC.nom+" courant ?"
225 reponse = askyesno(title="Sauvegarde du jdc courant",
228 test = self.saveJDC()
230 self.appli.affiche_infos("Sauvegarde impossible")
232 self.JDCDisplay_courant.jdc.supprime()
233 self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
234 self.nb.delete(self.nb.getcurselection())
235 #XXX CCAR: pour le moment mis en commentaire
236 #self.JDC.unset_context()
239 index = self.nb.index(self.nb.getcurselection())
240 self.JDCDisplay_courant = self.liste_JDCDisplay[index]
241 self.JDC = self.JDCDisplay_courant.jdc
243 self.JDCDisplay_courant = None
244 self.appli.toolbar.inactive_boutons()
246 def visuCRJDC(self,event=None):
247 return self.visuCR(mode='JDC')
249 def visuCR(self,mode):
251 Méthode permettant l'affichage du rapport de validation
254 if not hasattr(self,'JDC') : return
255 titre="rapport de validation du jeu de commandes courant"
256 cr = self.JDC.report()
257 #self.update_jdc_courant()
259 from Noyau.N_CR import CR
261 cr.debut = "Début rapport de validation du catalogue"
262 cr.fin = "Fin rapport de validation du catalogue"
263 titre="rapport de validation du catalogue"
264 if hasattr(self,'cata_ordonne_cr') :
265 cr.add(self.cata_ordonne_cr)
266 if hasattr(self,'cata_dev_ordonne_cr') :
267 cr.add(self.cata_dev_ordonne_cr)
268 for cata in self.cata:
269 if hasattr(cata,'JdC'):
270 cr.add(cata.JdC.report())
272 self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
274 def openJDC(self,file=None,units=None):
276 Demande à l'utilisateur quel JDC existant il veut ouvrir
278 if self.code == 'ASTER':
279 filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*'))
280 elif self.code == 'HOMARD' :
281 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
283 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
284 if not hasattr(self,'initialdir'):
285 self.initialdir = self.appli.CONFIGURATION.initialdir
287 if file.__class__.__name__ in ('Event',):
291 file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
292 defaultextension=".comm",
293 filetypes = filetypes,
294 initialdir = self.initialdir)
297 e=extension_fichier(file)
298 self.JDCName=stripPath(file)
299 self.initialdir = os.path.dirname(os.path.abspath(file))
303 format=self.appli.format_fichier.get()
304 # Il faut convertir le contenu du fichier en fonction du format
305 if convert.plugins.has_key(format):
306 # Le convertisseur existe on l'utilise
307 p=convert.plugins[format]()
309 text=p.convert('exec',self.appli)
310 if not p.cr.estvide():
311 self.appli.affiche_infos("Erreur à la conversion")
313 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
314 texte = str(p.cr)).wait()
317 # Il n'existe pas c'est une erreur
318 self.appli.affiche_infos("Type de fichier non reconnu")
319 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
322 # On se met dans le repertoire ou se trouve le fichier de commandes
323 # pour trouver les eventuels fichiers include ou autres
324 # localises a cote du fichier de commandes
325 os.chdir(self.initialdir)
326 CONTEXT.unset_current_step()
327 J=self.cata[0].JdC(procedure=text,appli=self.appli,
328 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
330 rep_mat=self.appli.CONFIGURATION.rep_mat,
332 if units is not None:
333 J.recorded_units=units
334 J.old_recorded_units=units
337 txt_exception = J.cr.get_mess_exception()
339 # des exceptions ont été levées à la création du JDC
340 # --> on affiche les erreurs mais pas le JDC
342 self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
343 if self.appli.test == 0 :
344 showerror("Erreur fatale au chargement d'un fichier",txt_exception)
346 self.ShowJDC(J,self.JDCName)
347 self.appli.toolbar.active_boutons()
348 # si le JDC ne contient rien (vide), on retourne ici
349 if len(self.JDC.etapes) == 0 : return
350 # dans le cas où le JDC est invalide, on affiche son CR
351 if not self.JDC.isvalid():
352 self.appli.top.update()
353 self.visuCR(mode='JDC')
356 def GetLabelJDC(self,nb_jdc = 'absent'):
358 Retourne le label de l'onglet du NoteBook associé au JDC à afficher
360 if nb_jdc == 'absent':
361 nb_jdc = len(self.nb.pagenames())
363 label_onglet = 'JDC'+`nb_jdc`
364 if label_onglet not in self.nb.pagenames() :
367 return self.GetLabelJDC(nb_jdc)
369 def saveasJDC(self,event=None):
371 Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
372 donner le nom du fichier de sauvegarde
374 self.saveJDC(echo='oui')
376 def saveJDC(self,echo='non'):
378 Sauvegarde le JDC courant.
379 Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
380 Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
382 Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
384 if not hasattr(self,'JDC') : return 0
385 format=self.appli.format_fichier.get()
386 if generator.plugins.has_key(format):
387 # Le generateur existe on l'utilise
388 g=generator.plugins[format]()
389 jdc_formate=g.gener(self.JDC,format='beautifie')
390 if format == 'homard':
391 self.jdc_homard=g.get_homard()
392 if not g.cr.estvide():
393 self.appli.affiche_infos("Erreur à la generation")
394 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
397 # Il n'existe pas c'est une erreur
398 self.appli.affiche_infos("Format %s non reconnu" % format)
399 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC")
401 self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
403 if echo =='oui' or self.JDCDisplay_courant.fichier == None:
404 return self.asknomsauvegardeJDC()
405 elif self.JDCDisplay_courant.fichier != None :
407 # Pour sauvegarde dans l etude si lancement depuis salome
408 if self.appli.salome != 0:
410 self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
411 from panelsSalome import SALOME_UNIQUE_BASE_Panel
412 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
413 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
417 MyCLinit=eficasCL.CLinit()
422 #PN Fin Ajout --> Salome
423 # le JDC a déjà un nom : on sauvegarde directement sans demander
424 # un autre nom au développeur
425 if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini) :
426 showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
429 if self.appli.format_fichier.get() == 'homard':
430 self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
431 self.JDCDisplay_courant.stop_modif()
432 self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
435 def asknomsauvegardeJDC(self):
436 """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
437 titre = "Sauvegarde d'un fichier de commandes "+self.code
438 if self.code == 'ASTER':
440 filtyp = ( ("ASTER", ".comm"),)
443 filtyp = ( (self.code, ".py"),)
444 sauvegarde = asksaveasfilename(title=titre,
445 defaultextension=defext,
447 initialdir = self.appli.CONFIGURATION.initialdir)
448 #initialdir = self.appli.CONFIGURATION.rep_user)
450 # PN ajout --> Salome
451 # Pour sauvegarde dans l etude si lancement depuis salome
452 if self.appli.salome != 0:
454 self.appli.salome.rangeInStudy(sauvegarde)
455 from panelsSalome import SALOME_UNIQUE_BASE_Panel
456 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
457 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
461 MyCLinit=eficasCL.CLinit()
466 # PN fin ajout --> Salome
467 if not save_in_file(sauvegarde,self.jdc_fini) :
468 showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
471 if self.appli.format_fichier.get() == 'homard':
472 self.save_homard(sauvegarde,self.jdc_homard)
473 self.JDCDisplay_courant.stop_modif()
474 self.appli.affiche_infos("Sauvegarde effectuée")
475 if sauvegarde != self.JDCDisplay_courant.fichier :
476 # l'utilisateur a sauvegardé le JDC sous un autre nom
477 self.JDCDisplay_courant.fichier = sauvegarde
478 self.JDCName = self.JDC.nom = stripPath(sauvegarde)
484 def changeNomPage(self):
485 """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
486 et recrée un autre onglet à la même place avec le bon nom
489 self.JDCDisplay_courant.jdc.nom = nom
490 nom_page = self.nb.getcurselection()
491 num_page = self.nb.index(nom_page)
492 tab = self.nb.tab(num_page)
493 tab.configure(text = nom)
495 def exitEFICAS(self,event=None):
497 Permet de sortir d'EFICAS en demandant à l'utilisateur
498 s'il veut sauvegarder les modifications en cours
500 liste = self.GetListeJDCaSauvegarder()
502 # Certains fichiers n'ont pas été sauvegardés ...
503 if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
504 test = self.saveall(liste)
507 if askyesno ("Quitter","Voulez-vous vraiment quitter l'application ?") :
508 for JDCDisplay in self.liste_JDCDisplay:
509 JDCDisplay.jdc.supprime()
513 def GetListeJDCaSauvegarder(self) :
514 """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
515 if not self.JDCDisplay_courant : return []
516 if len(self.liste_JDCDisplay) == 0 : return l
518 for JDCDisplay in self.liste_JDCDisplay:
519 if JDCDisplay.modified == 'o' :
523 def copy(self,event=None):
525 Lance la copie sur le JDC courant
527 if self.JDCDisplay_courant : self.JDCDisplay_courant.doCopy()
529 def paste(self,event=None):
531 Lance le collage sur le JDC courant
533 if self.JDCDisplay_courant : self.JDCDisplay_courant.doPaste()
535 def cut(self,event=None):
537 Lance le cut sur le JDC courant
539 if self.JDCDisplay_courant: self.JDCDisplay_courant.doCut()
543 Lance la suppression du noeud courant
545 if not self.JDCDisplay_courant : return
546 self.JDCDisplay_courant.init_modif()
547 self.JDCDisplay_courant.node_selected.delete()
549 def visuJDC_py(self,event=None):
551 Méthode permettant d'afficher dans une fenêtre à part l'écho au
552 format python du jdc courant
554 if not hasattr(self,'JDC') : return
555 jdc_fini = self.get_text_JDC('python')
556 if jdc_fini == None : return
558 titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
563 Méthode permettant d'afficher dans une fenêtre à part l'écho au
564 format .comm ou .py du jdc courant
566 if not hasattr(self,'JDC') : return
567 titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
568 format=self.appli.format_fichier.get()
569 self.jdc_fini = self.get_text_JDC(format)
570 if self.jdc_fini == None : return
571 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
573 def get_text_JDC(self,format):
574 if generator.plugins.has_key(format):
575 # Le generateur existe on l'utilise
576 g=generator.plugins[format]()
577 jdc_formate=g.gener(self.JDC,format='beautifie')
578 if not g.cr.estvide():
579 self.appli.affiche_infos("Erreur à la generation")
580 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
585 # Il n'existe pas c'est une erreur
586 self.appli.affiche_infos("Format %s non reconnu" % format)
587 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
592 Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
593 - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
594 - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
596 if not self.JDCDisplay_courant : return
598 cle_doc = self.JDCDisplay_courant.node_selected.item.get_docu()
599 if cle_doc == None : return
600 cle_doc = string.replace(cle_doc,'.','')
601 cle_doc = string.replace(cle_doc,'-','')
602 commande = self.appli.CONFIGURATION.exec_acrobat
603 nom_fichier = cle_doc+".pdf"
604 rep_fichier = cle_doc[0:2]
605 fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,rep_fichier,nom_fichier))
607 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
608 elif os.name == 'posix':
609 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
610 pid = os.system(script)
611 except AttributeError:
612 traceback.print_exc()
615 def visu_a_plat(self,event=None):
617 Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
619 if not hasattr(self,'JDC') : return
620 titre = 'fichier '+ self.JDCName + ' à plat '
621 self.jdc_fini = self.get_text_JDC('aplat')
622 if self.jdc_fini == None : return
623 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
625 def visu_txt_brut_JDC(self,event=None):
627 Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
629 if not hasattr(self,'JDC') : return
630 titre = "fichier de commandes utilisateur"
631 #texte = self.JDC.procedure
633 if self.JDCDisplay_courant.fichier == None:
634 self.appli.affiche_infos("Pas de fichier initial")
635 showerror("Impossible de visualiser le fichier initial",
636 "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
638 f=open(self.JDCDisplay_courant.fichier,'r')
641 self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte)
643 def affichage_fichier_ini(self):
645 Affichage des valeurs des paramètres relus par Eficas
647 self.appli.CONFIGURATION.affichage_fichier_ini()
649 def saveall(self,liste):
651 Sauvegarde tous les JDC contenus dans liste
654 for JDCDisplay in liste :
655 self.JDCDisplay_courant=JDCDisplay
656 self.JDC = JDCDisplay.jdc
657 test = test * self.saveJDC(echo = 'non')
660 def save_homard(self,nom,texte):
661 file_homard=nom+'.conf_homard'
663 f=open(file_homard,'w')
669 print "Pb a la sauvegarde sous le format homard"
670 if self.appli.salome != 0:
672 self.appli.salome.rangeInStudy(file_homard,"_CONF")
674 # ---------------------------------------------------------------------------
675 # Méthodes liées aux mots-clés inconnus
676 # ---------------------------------------------------------------------------
678 def mc_inconnus(self):
679 l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus()
680 o = fenetre_mc_inconnus(l_mc)
681 l = o.wait_new_list()
682 #print "mc_inconnus_new_list: ",l
683 #CCAR: Il n' y a pas de retour vers le JDC
685 def aideEFICAS(self,event=None):
686 AIDE.go(master=self.parent)
688 def update_jdc_courant(self):
689 self.JDCDisplay_courant.update()