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 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")
261 CONNECTOR.Disconnect(self.JDCDisplay_courant.jdc,"close",self.onClose,(self.JDCDisplay_courant,))
262 self.JDCDisplay_courant.supprime()
263 self.JDCDisplay_courant.jdc.supprime()
264 self.liste_JDCDisplay.remove(self.JDCDisplay_courant)
265 # Active le mecanisme de selection du notebook (selectJDC)
266 self.nb.delete(self.nb.getcurselection())
269 index = self.nb.index(self.nb.getcurselection())
270 self.JDCDisplay_courant = self.liste_JDCDisplay[index]
271 self.JDC = self.JDCDisplay_courant.jdc
274 self.JDCDisplay_courant = None
275 self.appli.toolbar.inactive_boutons()
277 def visuCRJDC(self,event=None):
278 return self.visuCR(mode='JDC')
280 def visuCR(self,mode):
282 Méthode permettant l'affichage du rapport de validation
285 if not hasattr(self,'JDC') : return
286 titre="rapport de validation du jeu de commandes courant"
287 cr = self.JDC.report()
288 #self.update_jdc_courant()
290 from Noyau.N_CR import CR
292 cr.debut = "Début rapport de validation du catalogue"
293 cr.fin = "Fin rapport de validation du catalogue"
294 titre="rapport de validation du catalogue"
295 if hasattr(self,'cata_ordonne_cr') :
296 cr.add(self.cata_ordonne_cr)
297 if hasattr(self,'cata_dev_ordonne_cr') :
298 cr.add(self.cata_dev_ordonne_cr)
299 for cata in self.cata:
300 if hasattr(cata,'JdC'):
301 cr.add(cata.JdC.report())
303 self.visu_texte_cr = Fenetre(self.appli,titre=titre,texte=texte_cr)
305 def openJDC(self,event=None,file=None,units=None):
307 Demande à l'utilisateur quel JDC existant il veut ouvrir
309 if self.code == 'ASTER':
310 filetypes = ( ("format "+self.appli.format_fichier.get(), ".comm"),("Tous",'*'))
311 elif self.code == 'HOMARD' :
312 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),("Tous",'*'))
314 filetypes = ( ("format "+self.appli.format_fichier.get(), ".py"),)
315 if not hasattr(self,'initialdir'):
316 self.initialdir = self.appli.CONFIGURATION.initialdir
319 file = askopenfilename(title="Ouverture d'un fichier de commandes Aster",
320 defaultextension=".comm",
321 filetypes = filetypes,
322 initialdir = self.initialdir)
325 e=extension_fichier(file)
326 self.JDCName=stripPath(file)
327 self.initialdir = os.path.dirname(os.path.abspath(file))
331 format=self.appli.format_fichier.get()
332 # Il faut convertir le contenu du fichier en fonction du format
333 if convert.plugins.has_key(format):
334 # Le convertisseur existe on l'utilise
335 p=convert.plugins[format]()
337 text=p.convert('exec',self.appli)
338 if not p.cr.estvide():
339 self.appli.affiche_infos("Erreur à la conversion")
341 titre="compte-rendu d'erreurs, EFICAS ne sait pas convertir ce fichier",
342 texte = str(p.cr)).wait()
345 # Il n'existe pas c'est une erreur
346 self.appli.affiche_infos("Type de fichier non reconnu")
347 showerror("Type de fichier non reconnu","EFICAS ne sait pas ouvrir ce type de fichier")
350 # On se met dans le repertoire ou se trouve le fichier de commandes
351 # pour trouver les eventuels fichiers include ou autres
352 # localises a cote du fichier de commandes
353 os.chdir(self.initialdir)
354 CONTEXT.unset_current_step()
355 J=self.cata[0].JdC(procedure=text,appli=self.appli,
356 cata=self.cata,cata_ord_dico=self.cata_ordonne_dico,
358 rep_mat=self.appli.CONFIGURATION.rep_mat,
360 if units is not None:
361 J.recorded_units=units
362 J.old_recorded_units=units
365 txt_exception = J.cr.get_mess_exception()
367 # des exceptions ont été levées à la création du JDC
368 # --> on affiche les erreurs mais pas le JDC
370 self.appli.affiche_infos("Erreur fatale au chargement de %s" %file)
371 if self.appli.test == 0 :
372 showerror("Erreur fatale au chargement d'un fichier",txt_exception)
374 self.ShowJDC(J,self.JDCName)
375 self.appli.toolbar.active_boutons()
376 # si le JDC ne contient rien (vide), on retourne ici
377 if len(self.JDC.etapes) == 0 : return
378 # dans le cas où le JDC est invalide, on affiche son CR
379 if not self.JDC.isvalid():
380 self.appli.top.update()
381 self.visuCR(mode='JDC')
383 def GetLabelJDC(self,nb_jdc = 'absent'):
385 Retourne le label de l'onglet du NoteBook associé au JDC à afficher
387 if nb_jdc == 'absent':
388 nb_jdc = len(self.nb.pagenames())
390 label_onglet = 'JDC'+`nb_jdc`
391 if label_onglet not in self.nb.pagenames() :
394 return self.GetLabelJDC(nb_jdc)
396 def saveasJDC(self,event=None):
398 Sauvegarde le JDC courant en demandant impérativement à l'utilisateur de
399 donner le nom du fichier de sauvegarde
401 self.saveJDC(echo='oui')
403 def saveJDC(self,echo='non'):
405 Sauvegarde le JDC courant.
406 Retourne 1 si la sauvegarde s'est bien faite, 0 sinon.
407 Si echo = 'oui' : interactif (l'utilisateur donne le nom sous lequel il
409 Si echo = 'non' : muet (sauvegarde le JDC dans JDC.procedure)
411 if not hasattr(self,'JDC') : return 0
412 format=self.appli.format_fichier.get()
413 if generator.plugins.has_key(format):
414 # Le generateur existe on l'utilise
415 g=generator.plugins[format]()
416 jdc_formate=g.gener(self.JDC,format='beautifie')
417 if format == 'homard':
418 self.jdc_homard=g.get_homard()
419 if not g.cr.estvide():
420 self.appli.affiche_infos("Erreur à la generation")
421 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
424 # Il n'existe pas c'est une erreur
425 self.appli.affiche_infos("Format %s non reconnu" % format)
426 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC")
428 self.jdc_fini = string.replace(jdc_formate,'\r\n','\n')
430 if echo =='oui' or self.JDCDisplay_courant.fichier == None:
431 return self.asknomsauvegardeJDC()
432 elif self.JDCDisplay_courant.fichier != None :
434 # Pour sauvegarde dans l etude si lancement depuis salome
435 if self.appli.salome != 0:
437 self.appli.salome.rangeInStudy(self.JDCDisplay_courant.fichier)
438 from panelsSalome import SALOME_UNIQUE_BASE_Panel
439 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
440 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
444 MyCLinit=eficasCL.CLinit()
450 #PN Fin Ajout --> Salome
451 # le JDC a déjà un nom : on sauvegarde directement sans demander
452 # un autre nom au développeur
453 if not save_in_file(self.JDCDisplay_courant.fichier,self.jdc_fini,self.appli.dir) :
454 showinfo("Erreur","Problème à la sauvegarde du fichier :" + `self.JDCDisplay_courant.fichier`)
457 if self.appli.format_fichier.get() == 'homard':
458 self.save_homard(self.JDCDisplay_courant.fichier,self.jdc_homard)
459 self.JDCDisplay_courant.stop_modif()
460 self.appli.affiche_infos("sauvegarde de "+`self.JDCDisplay_courant.fichier`+" effectuée")
463 def asknomsauvegardeJDC(self):
464 """ Demande à l'utilsateur le nom sous lequel il veut sauvegarder le JDC courant """
465 titre = "Sauvegarde d'un fichier de commandes "+self.code
466 if self.code == 'ASTER':
468 filtyp = ( ("ASTER", ".comm"),)
471 filtyp = ( (self.code, ".py"),)
472 sauvegarde = asksaveasfilename(title=titre,
473 defaultextension=defext,
475 initialdir = self.appli.CONFIGURATION.initialdir)
476 #initialdir = self.appli.CONFIGURATION.rep_user)
478 # PN ajout --> Salome
479 # Pour sauvegarde dans l etude si lancement depuis salome
480 if self.appli.salome != 0:
482 self.appli.salome.rangeInStudy(sauvegarde)
483 from panelsSalome import SALOME_UNIQUE_BASE_Panel
484 if len(SALOME_UNIQUE_BASE_Panel.dict_fichier_unite) > 0 :
485 self.appli.salome.creeConfigTxt(self.appli.CONFIGURATION.initialdir,SALOME_UNIQUE_BASE_Panel.dict_fichier_unite)
489 MyCLinit=eficasCL.CLinit()
495 # PN fin ajout --> Salome
496 if not save_in_file(sauvegarde,self.jdc_fini,None) :
497 showinfo("Erreur","Problème à la sauvegarde du fichier "+`sauvegarde`)
500 if self.appli.format_fichier.get() == 'homard':
501 self.save_homard(sauvegarde,self.jdc_homard)
502 self.JDCDisplay_courant.stop_modif()
503 self.appli.affiche_infos("Sauvegarde effectuée")
504 if sauvegarde != self.JDCDisplay_courant.fichier :
505 # l'utilisateur a sauvegardé le JDC sous un autre nom
506 self.JDCDisplay_courant.fichier = sauvegarde
507 self.JDCName = self.JDC.nom = stripPath(sauvegarde)
508 self.JDC.changefichier(sauvegarde)
514 def changeNomPage(self):
515 """ Change le nom de l'onglet contenant le JDC courant : en fait détruit l'actuel
516 et recrée un autre onglet à la même place avec le bon nom
519 self.JDCDisplay_courant.jdc.nom = nom
520 nom_page = self.nb.getcurselection()
521 num_page = self.nb.index(nom_page)
522 tab = self.nb.tab(num_page)
523 tab.configure(text = nom)
525 def exitEFICAS(self,event=None):
527 Permet de sortir d'EFICAS en demandant à l'utilisateur
528 s'il veut sauvegarder les modifications en cours
530 liste = self.GetListeJDCaSauvegarder()
532 # Certains fichiers n'ont pas été sauvegardés ...
533 if askyesno("Enregistrer modifications","Enregistrer les modifications ?") :
534 test = self.saveall(liste)
537 if askyesno ("Quitter","Voulez-vous vraiment quitter l'application ?") :
538 for JDCDisplay in self.liste_JDCDisplay:
539 JDCDisplay.jdc.supprime()
543 def GetListeJDCaSauvegarder(self) :
544 """ Retourne parmi la liste de tous les JDC ouverts la liste de ceux qui ont été modifiés """
545 if not self.JDCDisplay_courant : return []
546 if len(self.liste_JDCDisplay) == 0 : return l
548 for JDCDisplay in self.liste_JDCDisplay:
549 if JDCDisplay.modified == 'o' :
553 def copy(self,event=None):
555 Lance la copie sur le JDC courant
557 if self.JDCDisplay_courant : self.JDCDisplay_courant.doCopy()
559 def paste(self,event=None):
561 Lance le collage sur le JDC courant
563 if self.JDCDisplay_courant : self.JDCDisplay_courant.doPaste()
565 def cut(self,event=None):
567 Lance le cut sur le JDC courant
569 if self.JDCDisplay_courant: self.JDCDisplay_courant.doCut()
573 Lance la suppression du noeud courant
575 if not self.JDCDisplay_courant : return
576 self.JDCDisplay_courant.init_modif()
577 self.JDCDisplay_courant.node_selected.delete()
579 def visuJDC_py(self,event=None):
581 Méthode permettant d'afficher dans une fenêtre à part l'écho au
582 format python du jdc courant
584 if not hasattr(self,'JDC') : return
585 jdc_fini = self.get_text_JDC('python')
586 if jdc_fini == None : return
588 titre = 'fichier '+ self.JDCName + ' à la syntaxe Python',
593 Méthode permettant d'afficher dans une fenêtre à part l'écho au
594 format .comm ou .py du jdc courant
596 if not hasattr(self,'JDC') : return
597 titre = 'fichier '+ self.JDCName + ' à la syntaxe '+ self.code
598 format=self.appli.format_fichier.get()
599 self.jdc_fini = self.get_text_JDC(format)
600 if self.jdc_fini == None : return
601 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
603 def get_text_JDC(self,format):
604 if generator.plugins.has_key(format):
605 # Le generateur existe on l'utilise
606 g=generator.plugins[format]()
607 jdc_formate=g.gener(self.JDC,format='beautifie')
608 if not g.cr.estvide():
609 self.appli.affiche_infos("Erreur à la generation")
610 showerror("Erreur à la generation","EFICAS ne sait pas convertir ce JDC")
615 # Il n'existe pas c'est une erreur
616 self.appli.affiche_infos("Format %s non reconnu" % format)
617 showerror("Format %s non reconnu" % format,"EFICAS ne sait pas convertir le JDC en format %s "% format)
622 Permet d'ouvrir le fichier doc U de la commande au format pdf avec Acrobat Reader
623 - Ne fonctionne pas sous UNIX (chemin d'accès Acrobat Reader)
624 - indication du chemin d'accès aux fichiers pdf à revoir : trop statique
626 if not self.JDCDisplay_courant : return
628 cle_doc = self.JDCDisplay_courant.node_selected.item.get_docu()
629 if cle_doc == None : return
630 cle_doc = string.replace(cle_doc,'.','')
631 cle_doc = string.replace(cle_doc,'-','')
632 commande = self.appli.CONFIGURATION.exec_acrobat
633 nom_fichier = cle_doc+".pdf"
634 fichier = os.path.abspath(os.path.join(self.appli.CONFIGURATION.path_doc,nom_fichier))
636 os.spawnv(os.P_NOWAIT,commande,(commande,fichier,))
637 elif os.name == 'posix':
638 script ="#!/usr/bin/sh \n%s %s&" %(commande,fichier)
639 pid = os.system(script)
640 except AttributeError:
641 traceback.print_exc()
644 def visu_a_plat(self,event=None):
646 Méthode permettant d'afficher dans une fenêtre à part l'écho 'à plat' du jdc courant
648 if not hasattr(self,'JDC') : return
649 titre = 'fichier '+ self.JDCName + ' à plat '
650 self.jdc_fini = self.get_text_JDC('aplat')
651 if self.jdc_fini == None : return
652 self.visu_fichier_cmd = Fenetre(self.appli,titre=titre,texte = self.jdc_fini)
654 def visu_txt_brut_JDC(self,event=None):
656 Méthode permettant d'afficher le jeu de commandes tel qu'il a été passé au JDC
658 if not hasattr(self,'JDC') : return
659 titre = "fichier de commandes utilisateur"
660 #texte = self.JDC.procedure
662 if self.JDCDisplay_courant.fichier == None:
663 self.appli.affiche_infos("Pas de fichier initial")
664 showerror("Impossible de visualiser le fichier initial",
665 "EFICAS ne peut visualiser le fichier initial.\nIl s'agit d'un nouveau JDC")
667 f=open(self.JDCDisplay_courant.fichier,'r')
670 self.visu_texte_JDC = Fenetre(self.appli,titre=titre,texte=texte)
672 def affichage_fichier_ini(self):
674 Affichage des valeurs des paramètres relus par Eficas
676 self.appli.CONFIGURATION.affichage_fichier_ini()
678 def saveall(self,liste):
680 Sauvegarde tous les JDC contenus dans liste
683 for JDCDisplay in liste :
684 self.JDCDisplay_courant=JDCDisplay
685 self.JDC = JDCDisplay.jdc
686 test = test * self.saveJDC(echo = 'non')
689 def save_homard(self,nom,texte):
690 file_homard=nom+'.conf_homard'
692 f=open(file_homard,'w')
698 print "Pb a la sauvegarde sous le format homard"
699 if self.appli.salome != 0:
701 self.appli.salome.rangeInStudy(file_homard,"_CONF")
703 # ---------------------------------------------------------------------------
704 # Méthodes liées aux mots-clés inconnus
705 # ---------------------------------------------------------------------------
707 def mc_inconnus(self):
708 l_mc = self.JDCDisplay_courant.jdc.get_liste_mc_inconnus()
709 o = fenetre_mc_inconnus(l_mc)
710 l = o.wait_new_list()
711 #print "mc_inconnus_new_list: ",l
712 #CCAR: Il n' y a pas de retour vers le JDC
714 def aideEFICAS(self,event=None):
715 AIDE.go(master=self.parent)
717 def update_jdc_courant(self):
718 self.JDCDisplay_courant.update()